分析
django 的CSRF防護
解決
1. 確保csrf中間件加載
確保主配置文件 settings.py 中的 MIDDLEWARE_CLASSES =’django.middleware.csrf.CsrfViewMiddleware’, 中間件存在
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', # 確保存在沒有被註釋
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
2. app下的templates裏的html表處添加% csrf_token %}
例子
<form method = 'post' enctype="multipart/form-data" >
{% csrf_token %}
<h2>登 錄</h2>
<div class="form-group">
3. app下的views.py使用render
import django.shortcuts import render,render_to_response
return render(request, 'login.html', {'username': username})
環境
- django 2.1.05
- python3.6.0