python flask url_for 不断抛出 werkzeug 构建错误

标签 python flask

我在一个非常简单的应用程序中遇到 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_forurl_for 通常将端点(即 python 函数/方法)映射到 url。在您的情况下,home 是参数的值,而不是端点。

因此,改为使用您想要 url 的 python 函数的名称:

url_for('show', page='home')

应该是您要查找的内容。

关于python flask url_for 不断抛出 werkzeug 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26459466/

相关文章:

python - 无法连接 'str' 和 'float' 对象?

python - 更改Python中多维字典的值,其中嵌套字典包含在列表中

python - 寻求帮助,今天刚开始接触Python。 (3.0)

python - peewee DoubleField 的默认值不会反射(reflect)在 MySQL 数据库中

python - 将行转换为格式匹配索引

python - 为什么要使用 Flask 的 url_for?

flask - 如果关联为无,则为 SQLAlchemy 关联返回带有 Flask-Restful 嵌套字段对象的空 JSON 对象

python-3.x - 通过 enctype ="multipart/form-data"上传多个文件,第一个上传的文件大小始终为0,其余都可以

python - 如何从 Flask 服务器中的外部文件夹访问文件?

python - Peewee - 基数为 10 的 int() 的无效文字 : '' when looping over query