簡體   English   中英

如何調試Flask BuildError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM