python flask url_for正在抛出持续的werkzeug构建错误

ste*_*fan 2 python werkzeug url-for

我在一个非常简单的应用程序中遇到了一个烧瓶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)
Run Code Online (Sandbox Code Playgroud)

以上是我的蓝图文件,这些路线工作正常,但如果我尝试做

with flask.test_request_context():
    print url_for('home') #home.html or any other forms
Run Code Online (Sandbox Code Playgroud)

我刚收到这个错误:

raise BuildError(endpoint, values, method)
werkzeug.routing.BuildError: ('home', {}, None)
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我弄清楚这里发生了什么?在我的html页面中,我可以打印出静态文件的位置:

{{ url_for('static', filename='style.css') }}
Run Code Online (Sandbox Code Playgroud)

但如果我试着这样做:

{{ url_for('home') }}
Run Code Online (Sandbox Code Playgroud)

我再次得到同样的错误.任何人都有一些建议如何继续?

seb*_*ian 5

我想你正试图用url_for错误的方法. url_for通常将端点(即python函数/方法)映射到url.在您的情况下home是参数的值,而不是端点.

所以,相反,使用你想要url的python函数的名称:

url_for('show', page='home')
Run Code Online (Sandbox Code Playgroud)

应该是你正在寻找的.