flask-wtf擴展中FormField報錯:'csrf_token': ['CSRF token missing']

在使用flask_wtf時使用的這個結構FieldList(FormField(SomeForm)) 報錯:python

'csrf_token': ['CSRF token missing']

由於FormField也是form,flask_wtf中引入的Form默認開啓了csrf驗證(flask_wtf.Form是 wtforms.ext.csrf.form.SecureForm的子類), 因此以下定義會報錯:flask

from flask_wtf import Form
class SomeForm(Form): 
    pass

解決:code

from wtforms import Form as BaseForm
class SomeForm(BaseForm): 
    pass

或(不太優美,不太推薦):orm

from flask_wtf import Form
class SomeForm(Form):
    def __init__(self, *args, **kwargs):
        kwargs['csrf_enabled'] = False
        Form.__init__(self, *args, **kwargs)
    
    pass

參考:csrf

https://www.reddit.com/r/flask/comments/2s47nz/af_how_to_get_formfield_and_fieldlist_working/token

http://stackoverflow.com/questions/15649027/wtforms-csrf-flask-fieldlist/15651474#15651474get

相關文章
相關標籤/搜索