Python 由于()的url_而导致Flask BuildError
当我的Flask程序编译时,试图通过浏览器访问服务器会导致以下生成错误Python 由于()的url_而导致Flask BuildError,python,flask,Python,Flask,当我的Flask程序编译时,试图通过浏览器访问服务器会导致以下生成错误 Traceback (most recent call last): File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ return self.wsgi_app(environ, start_response) File "/var/www/pulleffec
Traceback (most recent call last):
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/var/www/pulleffect/pulleffect/middleware/reverse_proxy_fix.py", line 34, in __call__
return self.app(environ, start_response)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/werkzeug/contrib/fixers.py", line 144, in __call__
return self.app(environ, start_response)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/var/www/pulleffect/pulleffect/lib/utilities.py", line 97, in decorated_function
return f(*args, **kwargs)
File "/var/www/pulleffect/pulleffect/__init__.py", line 86, in index
return render_template('index.html')
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/templating.py", line 128, in render_template
context, ctx.app)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/templating.py", line 110, in _render
rv = template.render(context)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "/var/www/pulleffect/pulleffect/templates/index.html", line 1, in top-level template code
{% extends "signin.html" %}
File "/var/www/pulleffect/pulleffect/templates/signin.html", line 1, in top-level template code
{% extends "layout.html" %}
File "/var/www/pulleffect/pulleffect/templates/layout.html", line 35, in top-level
template code
var shiftsRoute = "{{ url_for('shifts.index') }}";
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/flask/helpers.py", line 305, in url_for
force_external=external)
File "/var/www/pulleffect/penv/lib/python2.7/site-packages/werkzeug/routing.py", line 1620, in build
raise BuildError(endpoint, values, method)
BuildError: ('shifts.index', {}, None)
我的理解是,这通常来自于尝试通过url的路由调用url,而不是它的方法。但是,在此实例中,索引是方法,而不是路由,并且仍然会引发错误
这是程序中失败的特定行:
var shiftsRoute = "{{ url_for('shifts.index') }}";
这是方法索引
@shifts.route('')
@require_signin
def index():
不幸的是,我完全迷路了。我唯一的猜测是调用shifts.index要求索引包含在类shifts中,而不是简单地保存在shifts.py中。什么是shifts
您只需执行以下操作:
@route('')
def index():
#do something
pass
然后:
什么是
shifts
以及如何将其绑定到Flask
app对象?shifts是应用程序中的一个文件,提供所有当前工作人员的工作班次。我不是100%确定你所说的搭售是什么意思。但是它需要在主屏幕上生成一个表,我确实注册了蓝图。所以你有一个文件shifts.py
,你在你的主应用程序文件中注册为蓝图,像app.register\u blueprint(shifts,url\u prefix='/shifts')
,对吗?您在shifts.py中创建了Blueprint对象,对吗?像这样的Blueprint('shifts'、\uu name\uuuu、template\u folder='templates/shifts')
之类的?@TylerHarden:你需要向我们展示你是如何创建Blueprint()
对象的,否则这里没有足够的信息来帮助你。蓝图是这样注册的:shifts=Blueprint('shift',name,template_folder='templates')名称有适当的下划线,尽管出于某些原因,stack没有显示themshifts是应用程序中的一个文件,它提供了所有当前工作人员的工作班次。它当前以代码描述的方式编写,但不起作用。最有可能的是shifts
是一个蓝图。您需要使用@app.route()Flask()
实例(通常命名为app
)或蓝图(命名为任何名称)上的装饰器。使用蓝图时,需要在路线前面加上蓝图名称(指向blueprint()
的第一个参数)。在任何情况下,如果没有限定名称,(@app.route()
或@shifts.route()
)甚至找不到装饰者,更不用说工作了。如果shifts
是一个蓝图,那么端点名称就有前缀。最后但并非最不重要的一点是,这应该是一个注释,而不是一个答案。你要求澄清。如果你还没有评论的声誉,那么就不要评论。Eric Workman已经要求同样的澄清,所以反正你的职位是多余的。
url_for('index')