Skip to main content
 首页 » 编程设计

python之Django csrf token 丢失或不正确错误 403

2024年10月01日21cmt

当我提交表单时出现以下错误:

CSRF verification failed

Reason given for failure:

CSRF token missing or incorrect. 

我的 views.py 是:

def name(request): 
   if request.method == 'POST': 
        form=NameForm(request.POST) 
        if form.is_valid(): 
            name=form.cleandata['your_name'] 
            return HttpResponseRedirect('/thanks/',RequestContext(request)) 
 
    else: 
        form=NameForm() 
    return render_to_response('contact.html') 

我的 setting.py 文件:

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', 
] 

我的 forms.py 文件是:

class NameForm(forms.Form): 
    your_name=forms.CharField(initial='your name',max_length=100) 

我的 contact.html 是:

<form action="/your-name/" method="POST"> 
{% csrf_token %} 
{{form}} 
<input type="submit" value="Submit" /> 
</form> 

urls.py 是:

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'^search/$', search),url(r'^contact/$',contact), 
url(r'^name/$',name),url(r'^your-name',name),url(r'^thanks/$',thank) 
] 

请您参考如下方法:

使用 render函数来呈现模板,而不是 render_to_response .

from django.shortcuts import render 
 
def name(request): 
  if request.method == 'POST': 
    form = NameForm(request.POST) 
    if form.is_valid(): 
        name = form.cleaned_data['your_name'] 
        return HttpResponseRedirect('/thanks/', RequestContext(request)) 
    else: 
        form = NameForm() 
    return render(request, 'contact.html')