Логика в шаблоне рендеринга Flask - PullRequest
1 голос
/ 07 июля 2019

Я новичок в Python и колбе.Я смотрю на этот код:

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm(request.form)
    if request.method == 'POST' and form.validate():
        user = User(form.username.data, form.email.data,
                    form.password.data)
        db_session.add(user)
        flash('Thanks for registering')
        return redirect(url_for('login'))
    return render_template('register.html', form=form)

Файл register.html отображается (отображается в браузере) как последний шаг в register ().По логике он должен сначала отображаться в браузере, чтобы пользователь мог заполнить данные.Очевидно, мне не хватает чего-то очень простого.Может ли кто-нибудь помочь мне понять логику здесь.Спасибо

1 Ответ

1 голос
/ 07 июля 2019

Давайте рассмотрим, что происходит, когда пользователь посещает /register:

  1. Пользователь вводит 'http://address:port/register' и нажимает [Enter]
  2. Браузер отправляет GET запрос по адресу.
  3. Flask разрешает этот запрос на /register route.
  4. Теперь request.method равен GET, поэтому генерируется form (он не заполнен, хотя).
    if request.method == 'POST' and form.validate(): блок не запускается, потому что метод отличается.
    Итак, фляга визуализирует шаблон и отправляет HTML.
  5. Теперь пользователь видит форму, заполняет ее, нажимает кнопку [Send].
    Браузер на этот раз отправляет запрос POST со всеми значениями всех полей.
  6. Flask снова направляет этот запрос в конечную точку /register, поскольку он принимает POST запросов тоже.
  7. На этот раз запускается блок if, и, если форма действительна, пользователь генерируется, и колба перенаправляет пользователя.

Надеюсь, это прояснит ваше замешательство.

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