Не могу определить, что вызывает Flask Werkzeug BuildError - PullRequest
0 голосов
/ 07 января 2019

Я использую параметры URL на своем сайте в качестве идентификаторов пользовательских данных. Если пользователь нажимает одну конкретную ссылку на сайте, эти параметры будут иметь значение «none», и я пытаюсь использовать следующую функцию, чтобы затем отправить их обратно на ту же страницу с правильными параметрами:

<a href="{{ url_for('site', param1='none', param2='none', param3='none', param4='none') }}">Site</a>

@app.route('/my-site/<param1>/<param2>/<param3>/<param4>', methods=['GET', 'POST'])
def site():

    if param1 == 'none':

       linking_data = Posts.query.filter_by(user=current_user.email).first()

       return render_template('site', param1=linking_data.param1, 
                                      param2=linking_data.param2, 
                                      param3=linking_data.param3, 
                                      param4=linking_data.param4)

Если параметры жестко запрограммированы, этот подход хорошо работает. Однако если я попытаюсь определить параметры, как указано выше, это приведет к следующей ошибке:

werkzeug.routing.BuildError: Could not build url for endpoint 'site' with values ['param3', 'param4'].     
Did you forget to specify values ['param1', 'param2']?

Почему он считает, что я не указал первые два параметра?

1 Ответ

0 голосов
/ 07 января 2019

Вам необходимо добавить параметры URL в обработчик:

@app.route('/my-site/<param1>/<param2>/<param3>/<param4>', methods=['GET', 'POST'])
def site(param1=None, param2=None, param3=None, param4=None):
    ....

СОВЕТ: Значение None выводится в виде строки None, а не none. Было бы лучше, если бы вы обновили свой код для обработки строкового значения для «none», которое не чувствительно к регистру.

...