在forms.py中声明CSRF令牌

时间:2019-09-13 10:55:39

标签: django django-forms django-2.2 csrf-token

我使用的是Django的CSRF-Token,其用法在互联网上最为常见:

  

MyFormPage.html

<form method="POST">  
        {% csrf_token %}  
        {{ form.as_p }}  
</form>

但是我想知道-有没有办法直接将其包含在forms.py中?

1 个答案:

答案 0 :(得分:1)

我不知道这是否是一个好习惯,但是您可以执行以下操作:

from django.middleware import csrf

class SomeForm(forms.Form):
    csrfmiddlewaretoken = forms.CharField(widget=forms.HiddenInput(), initial=csrf._get_new_csrf_token())

呈现的输入字段将为:

<input type="hidden" name="csrfmiddlewaretoken" value="Hsw4uH5jbioQhaWrgAtGgEVp5GbnXIrayuvTqbbABaSxPbGJqksEIxVI4zJW8VVj" id="id_csrfmiddlewaretoken">