我正在嘗試編寫一個允許用戶輸入「Idea」並將其保存到數據庫的網頁。我想使用表單的Post方法。我試圖按照django page上的說明進行操作,但驗證仍然失敗。Django CSRF令牌認證失敗
這是我的表單代碼:
<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>
我的URL配置重定向/
到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 2014-08-27 18:42:44
@MartinM謝謝,至少我現在可以繼續發展! – elder4222 2014-08-27 18:52:44
沒問題,看看klasske的回答 – MartinM 2014-08-27 18:56:08