Django之中间件与CSRF_TOKEN
在Django中,CSRF(跨站请求伪造)保护是通过中间件来实现的。以下是如何配置Django项目以包括CSRF保护的步骤:
- 确保
django.middleware.csrf.CsrfViewMiddleware
已经添加到你的settings.py
文件中的MIDDLEWARE
配置中。
MIDDLEWARE = [
# ...
'django.middleware.csrf.CsrfViewMiddleware',
# ...
]
- 在你的模板文件中,确保你已经加载了
django.template.context_processors.csrf
上下文处理器。这通常在settings.py
中的TEMPLATES
配置的OPTIONS
中的context_processors
列表中设置。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {
'context_processors': [
# ...
'django.template.context_processors.csrf',
# ...
],
},
# ...
},
]
- 在你的表单中,你需要包含一个隐藏的
csrfmiddlewaretoken
字段。这可以通过在你的表单模板中使用{% csrf_token %}
模板标签来实现。
<form method="post">
{% csrf_token %}
<!-- 表单字段 -->
<input type="submit" value="Submit">
</form>
当你遵循上述步骤时,Django将自动为所有POST表单请求添加CSRF保护。如果你正在使用基于函数的视图,你可以使用csrf_protect
装饰器或在函数视图中使用csrf_exempt
来指定某个视图不需要CSRF保护。
评论已关闭