2016-07-06 27 views
1

Ich möchte ein Flask WTF-Formular nur mit Python-Code erstellen und ausfüllen. Das Formular generiert jedoch nicht automatisch ein CSRF-Token, wenn ich es mit Python-Code erstelle. Gibt es eine Möglichkeit, dies manuell zu tun?Erzeugen eines CSRF-Tokens manuell mit Flask WTF-Forms

Die Form, in Frage:

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()]) 

der Code ich die Form zu erzeugen, verwenden:

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

Antwort

1

Da Sie nicht CSRF-Schutz verwenden, deaktivieren. Sie können auch request.args als Datenquelle übergeben.

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

Was wäre, wenn ich den csrf-Schutz nicht deaktivieren möchte? Gibt es einen Weg, es so zu machen? – Philip

+1

Sie würden es effektiv deaktivieren, indem Sie ein gültiges Token generieren und es übergeben. Die einzige Möglichkeit, etwas zu sichern, ist, wenn der Client ein zuvor generiertes Token sendet. GET-Anforderungen sollten Daten nicht mutieren, daher müssen sie normalerweise nicht geschützt werden. – davidism