2016-07-06 3 views
1

Pythonコードのみを使用してFlask WTF-Formを作成して記入したいと思います。しかし、フォームはPythonコードで作成すると自動的にCSRFトークンを生成しません。手動でこれを行う方法はありますか?問題のFlask WTF-FormsでCSRFトークンを手動で生成する

形式:

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

関連する問題