【发布时间】:2014-10-21 11:31:07
【问题描述】:
我正在尝试编写一个网页,允许用户输入“想法”并将其保存到数据库中。我想使用表单的 Post 方法。我尝试按照django page 上的说明进行操作,但身份验证仍然失败。
这是我的表单代码:
<form action="/" method="post">
{% csrf_token %}
<p> Title: </p> <input type="text" name="title"> </br>
<p> Details: </p> <input type="text" name="details">
<input type="submit" value="Post">
</form>
我的 URLconf 重定向 / 到 Ideas.views.home 与行
url(r'^$', 'Ideas.views.home' , name='home')
视图本身是
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django.template import loader, Template, Context, RequestContext
from django.core.context_processors import csrf
from Ideas.models import Idea
# Create your views here.
def home(request):
if request.method == 'POST':
submitted = Idea.objects.create(title=request.POST['title'], detail=request.POST['details'], votes=0)
submitted.save()
m = RequestContext(request, {"passed_ideas": Idea.objects.all()})
return render_to_response('basic.html', m)
我也试过这样做:
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django.template import loader, Template, Context, RequestContext
from django.core.context_processors import csrf
from Ideas.models import Idea
# Create your views here.
def home(request):
c = {}
c.update(csrf(request))
if request.method == 'POST':
submitted = Idea.objects.create(title=request.POST['title'], detail=request.POST['details'], votes=0)
submitted.save()
c['passed_ideas'] = Idea.objects.all()
return render_to_response('basic.html', c)
如何让 CSRF 身份验证正常工作?
【问题讨论】:
-
尝试@csrf_exempt装饰器到你的视图,这消除了csrf令牌验证,如果它有效,你可以挖掘更多......
-
@MartinM 谢谢,至少我现在可以继续开发!
-
没问题,看看klasske的回答