2016-07-06 9 views
1

Я хотел бы создать и заполнить флеш-WTF-форму, используя только код python. Тем не менее, форма не автоматически генерирует токен CSRF, когда я создаю его с помощью кода python. Есть ли способ сделать это вручную?Создание маркера CSRF вручную с помощью фляг WTF-форм

Формой вопрос:

from flask_wtf import Form 
from wtforms import StringField 
from wtforms.validators import DataRequired, URL 

class URLForm(Form): 
    url = StringField('url', validators=[DataRequired(), URL(), Level3Url()]) 

код используется для создания формы:

from forms import URLForm 
form = URLForm() 
if 'url' in request.args: 
    url = request.args.get('url') 
    form.url.data = url 
    if form.validate(): 
     ... 

ответ

1

Поскольку вы не используете защиту CSRF, отключите его. Вы также можете передать request.args в качестве источника данных.

form = URLForm(request.args, csrf_enabled=False) 
+0

Что делать, если я предпочитаю не отключать защиту csrf? есть ли способ сделать это так? – Philip

+1

Вы бы эффективно отключили его, создав действительный токен и передав его. Единственный способ гарантировать что-либо, если клиент отправляет ранее сгенерированный токен. Запросы GET не должны мутировать данные, поэтому их, как правило, не нужно защищать в любом случае. – davidism