I am curious: I know there are 2 ways of csrf protection in Django: {% csrf_token %}
in templates and @csrf_protect
in views.
我很好奇:我知道Django中有两种csrf保护方法:模板中的{% csrf_token %}和视图中的@csrf_protect。
So, question is: are they interchangeable? I mean I can use for example only @csrf_protect
i my views without {% csrf_token %}
tag in my templates and effect will be the same?
所以,问题是:它们是可以互换的吗?我的意思是我可以只使用@csrf_protect我的视图而不使用我的模板中的{% csrf_token %}标签,效果会是一样的吗?
I'm asking that because I use mako in recent Django project and there is no such tag as {% csrf_token %}
...
我这么问是因为我在最近的Django项目中使用了mako,并且没有{% csrf_token %}这样的标签……
Thanks!!!
谢谢! ! !
1 个解决方案
#1
2
You need both. {% csrf_token %}
adds hidden fields that is included in POST
requests. While @csrf_protect
adds a context variable that is used by {% csrf_token %}
.
你需要两个。{% csrf_token %}添加包含在POST请求中的隐藏字段。而@csrf_protect添加了一个由{% csrf_token %}使用的上下文变量。
#1
2
You need both. {% csrf_token %}
adds hidden fields that is included in POST
requests. While @csrf_protect
adds a context variable that is used by {% csrf_token %}
.
你需要两个。{% csrf_token %}添加包含在POST请求中的隐藏字段。而@csrf_protect添加了一个由{% csrf_token %}使用的上下文变量。