Как отладить Flask BuildError - PullRequest
       5

Как отладить Flask BuildError

1 голос
/ 15 октября 2011

Я пытаюсь отладить ошибку BuildError в приложении «Колба 0.8».Ошибка возникает в функции personal_open_account() при попытке визуализации части 2 многошаговой формы.Шаг 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):
...

Ответы [ 2 ]

0 голосов
/ 29 сентября 2016

@app.route('/personal/save/<product_type>/<slug>/open-account' - неправильный способ создания API. Здесь у вас есть два непрерывных идентификатора /<product_type>/<slug>/, что неприемлемо для маршрутизатора. Попробуйте перефразировать маршрут так: @app.route('/personal/save/<product_type>/slugs/<slug>/open-account'.

0 голосов
/ 15 октября 2011

Как можно легко понять из просмотра кода, аргументы product_id и slug не были переданы при последующих вызовах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...