我在一个非常简单的应用程序中遇到 flask url_for('') 错误。
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
base = Blueprint('main', __name__)
@base.route('/', defaults={'page':'home'})
@base.route('/<page>')
def show(page):
try:
return render_template('%s.html'%page, name='my name is')
except TemplateNotFound:
abort(404)
上面是我的蓝图文件,这些路线工作正常,但如果我尝试这样做
with flask.test_request_context():
print url_for('home') #home.html or any other forms
我刚收到这个错误:
raise BuildError(endpoint, values, method)
werkzeug.routing.BuildError: ('home', {}, None)
谁能帮我弄清楚这是怎么回事? 在我的 html 页面中,我可以打印出静态文件的位置:
{{ url_for('static', filename='style.css') }}
但如果我尝试这样做:
{{ url_for('home') }}
我又遇到了同样的错误。有人对如何进行有一些建议吗?
最佳答案
我认为您正试图以错误的方式使用 url_for
。
url_for
通常将端点(即 python 函数/方法)映射到 url。在您的情况下,home
是参数的值,而不是端点。
因此,改为使用您想要 url 的 python 函数的名称:
url_for('show', page='home')
应该是您要查找的内容。
关于python flask url_for 不断抛出 werkzeug 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26459466/