Django-403 Forbidden。 CSRF令牌丢失或不正确 [英] Django - 403 Forbidden. CSRF token missing or incorrect
问题描述
我尝试为模型添加ModelForm,但是每次POST尝试均以 403禁止。CSRF验证失败。请求中止。给出失败原因:CSRF令牌丢失或不正确。我没有render_to_response()方法,因此无法通过添加RequestContext来解决此问题。这是我的模型:
I try to add ModelForm for my model, but every POST attempt ends with "403 Forbidden. CSRF verification failed. Request aborted. Reason given for failure: CSRF token missing or incorrect". I have no render_to_response() method, so I can't fix this problem by adding RequestContext. Here's my model:
from django.db import models
from django.forms import ModelForm
.
.
.
class Text(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
def __str__(self):
return self.title
class TextForm(ModelForm):
class Meta:
model = Text
fields = '__all__'
这是我的观点。
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Text, TextForm
.
.
.
def text_new(request):
if request.method == 'POST':
form = TextForm(request.POST)
if form.is_valid():
return HttpResponse('Test')
else:
form = TextForm()
return render(request, 'projectname/new.html', {'form': form})
这是new.html的一部分:
And here's part of new.html:
<form method="post" action="">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
另一个问题: text_name方法名称可以吗?
And another one question: is "text_name" method name ok? Thank you so much!
推荐答案
在将csrf_exempt添加到您的views.py后,如下所示:
Add csrf_exempt to your views.py after importing it like this:
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Text, TextForm
from django.views.decorators.csrf import csrf_exempt,csrf_protect #Add this
.
.
.
@csrf_exempt #This skips csrf validation. Use csrf_protect to have validation
def text_new(request):
if request.method == 'POST':
form = TextForm(request.POST)
if form.is_valid():
return HttpResponse('Test')
else:
form = TextForm()
return render(request, 'projectname/new.html', {'form': form})
这篇关于Django-403 Forbidden。 CSRF令牌丢失或不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!