Проверьте DecimalRangeField в WTForms Flask - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь проверить DecimalRangeField, так что пользователь должен предоставить ввод. Проблема в том, что я хочу, чтобы значение по умолчанию, например, 50 (ползунок появляется в середине), приводит к сбоям встроенных валидаторов DataRequired и InputRequired (я пробовал оба), потому что они принимают значение по умолчанию в качестве заданный балл, даже если пользователь не показал никаких действий (по крайней мере, это то, что я думаю, что происходит).

Как я могу иметь какое-то значение по умолчанию, но все же проверить, предпринял ли пользователь какое-либо действие (щелкнув где-нибудь на ползунке, даже если в конце оно совпадает со значением по умолчанию), и отобразить ошибку, такую ​​как «Это поле обязательно для заполнения» "на случай, если пользователь не коснулся слайдера? Нужен ли для этого специальный валидатор?

Спасибо за любые предложения.

Вот соответствующие части кода:

index.py

@app.route("/questionnaire1", methods=['GET', 'POST'])
def controlAndDeliberation():
    form = controlAndDeliberationForm()
    if form.validate_on_submit():
        return redirect(url_for())
    return render_template('control_and_deliberation.html', form=form)

questionnaires.py

class controlAndDeliberationForm(FlaskForm):
    perceivedControlQ1 = DecimalRangeField(
                        '1. How much control did you feel you have?',
                        default=50,
                        validators=[DataRequired()]
                        )

control_and_deliberation.html

<div class="form-group">
    {{ form.perceivedControlQ1.label }}<br>
    {{ form.perceivedControlQ1 }}
    {% for error in form.perceivedControlQ1.errors %}
        <span style="color: #d60000; font-size: 15px">{{ error }}</span>
    {% endfor %}
</div>

1 Ответ

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

Возможно, это лучше всего обработать на переднем конце (если кто-то не появится, чтобы исправить меня здесь).
Вы можете использовать Javascript для предотвращения отправки формы и отображения сообщения до тех пор, пока пользователь не щелкнет по ползунку.
В противном случае вам придется отклонить определенное значение и перезагрузить страницу, а затем высветить сообщение об ошибке, в котором пользователю предлагается отодвинуть ползунок от «50». Проблема здесь в том, что, поскольку это слайдер, пользователю не нужно вводить данные, он всегда отправляет числовое значение при отправке формы.

...