[英]How to debug Flask BuildError
我正在尝试在flask 0.8应用程序中调试BuildError。 尝试呈现多步骤表单的第2部分时,在函数personal_open_account()
发生错误。 第1步呈现一个表单,如果经过验证,则执行
return redirect(url_for('personal_open_account', step='2'))
。 也就是说,它调用自身,但是带有一个新的step
参数。 第1步成功完成,并且表单已通过验证(我可以看到打印的语句),但是随后我立即收到BuildError:
Traceback (most recent call last):
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1504, in wsgi_app
response = self.full_dispatch_request()
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1264, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1262, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/app.py", line 1248, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/sth/dev/sb_flask/sb/views/personal.py", line 333, in personal_open_account
return redirect(url_for('personal_open_account', step='2'))
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/flask/helpers.py", line 208, in url_for
return ctx.url_adapter.build(endpoint, values, force_external=external)
File "/Users/sth/.virtualenvs/sb/lib/python2.7/site-packages/werkzeug/routing.py", line 1605, in build
raise BuildError(endpoint, values, method)
BuildError: ('personal_open_account', {'step': '2'}, None)
该函数本身看起来像:
@app.route('/personal/save/<product_type>/<slug>/open-account', methods=['GET', 'POST'])
def personal_open_account(product_type, slug):
...
@app.route('/personal/save/<product_type>/<slug>/open-account'
是创建api的错误方法。在这里,您有两个连续的/<product_type>/<slug>/
路由器不接受。请尝试改写类似@app.route('/personal/save/<product_type>/slugs/<slug>/open-account'
的路由。
从查看代码可以轻松推断出,在随后的调用中没有给出product_id和slug参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.