РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
289 of 643 menu

Атрибут csrf_token

Атрибут csrf_token класса FlaskForm хранит строковое значение токена, которое генерируется Flask-WTF для защиты формы от подделки межсайтовых запросов. Атрибут не принимает параметров и доступен как обычное свойство экземпляра формы. Его значение подставляется в скрытое поле HTML-формы, а при отправке проверяется автоматически.

Синтаксис

form.csrf_token

Пример

Давайте создадим простую форму и выведем значение атрибута csrf_token в консоль:

from flask import Flask from flask_wtf import FlaskForm from wtforms import StringField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): name = StringField('Name') submit = SubmitField('Send') with app.test_request_context('/'): form = MyForm() print(form.csrf_token)

Результат выполнения кода:

"<input id=\"csrf_token\" name=\"csrf_token\" type=\"hidden\" value=\"...\">"

Пример

Давайте выведем только строку токена через атрибут current_token:

from flask import Flask from flask_wtf import FlaskForm from wtforms import StringField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): name = StringField('Name') submit = SubmitField('Send') with app.test_request_context('/'): form = MyForm() print(form.csrf_token.current_token)

Результат выполнения кода:

"abcde"

Пример

Давайте отрендерим атрибут csrf_token в Jinja-шаблоне формы:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): name = StringField('Name') submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() return render_template('index.html', form=form)
<form method="post"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name }} {{ form.submit }} </form>

Результат выполнения кода в браузере:

<form method="post"> <input id="csrf_token" name="csrf_token" type="hidden" value="..."> <label for="name">Name</label> <input id="name" name="name" type="text" value=""> <input id="submit" name="submit" type="submit" value="Send"> </form>

Смотрите также

  • класс FlaskForm,
    который является базовым классом для форм
  • метод validate_on_submit,
    который проверяет форму при отправке
  • метод hidden_tag,
    который выводит все скрытые поля формы
  • атрибут errors,
    который содержит ошибки валидации формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить