Jak ladit Flask BuildError

hlasů
1

Snažím se ladění BuildError v baňce 0,8 app. Dojde k chybě ve funkci personal_open_account()a zároveň se snaží poskytnout část 2 vícestupňové formou. Krok 1 poskytuje formu, a pokud je ověřena, provádí
return redirect(url_for('personal_open_account', step='2')). To znamená, že volá sám, ale s novým stepparametrem. Krok 1 úspěšně dokončí, a forma je ověřen (vidím tiskové prohlášení jsem dal), ale pak jsem okamžitě obdrží 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)  

Tato funkce sama o sobě vypadá takto:

@app.route('/personal/save/<product_type>/<slug>/open-account', methods=['GET', 'POST'])
def personal_open_account(product_type, slug):
...
Položena 15/10/2011 v 15:34
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Jak lze snadno odvodit z pohledu na kód, argumenty product_id a slimák nebyla dána na následné volání.

Odpovězeno 15/10/2011 v 17:04
zdroj uživatelem

hlasů
0

@app.route('/personal/save/<product_type>/<slug>/open-account'je špatný způsob, jak vytvořit API. Zde máte dvě indentifiers v kontinuální /<product_type>/<slug>/, což je nepřijatelné k routeru. Zkuste přeformulování trasu takhle @app.route('/personal/save/<product_type>/slugs/<slug>/open-account'.

Odpovězeno 29/09/2016 v 10:26
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more