flask and url_for() and werkzeug.routing.BuildError



这是一个非常简单的蓝图/控制器:

maintenance_controller = Blueprint('maintenance', __name__, url_prefix='/maintenance')
@maintenance_controller.route('/csv', methods=['GET','POST'])
def csv():
    return render_template('/maintenance/csv.html')

然后,在csv.html中:

<form action="{{ url_for('csv') }}">
...
</form>

但是,这会产生一个异常:

werkzeug.routing.BuildError
BuildError: ('/csv', {}, None)

我错过了什么?

您需要给出一个蓝图相对路径:

<form action="{{ url_for('.csv') }}">

,前提是模板在同一个蓝图中。对于蓝图之外的模板,您需要包含蓝图名称:

<form action="{{ url_for('maintenance.csv') }}">

请参阅蓝图文档中的构建url 部分。

最新更新