在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保护。