2011-04-17 42 views
9

如果我包括我的表單模板,並在我看來,進口的RequestContext {% csrf_token%}Django的CSRF的RequestContext

我必須包括別的在我看來,或將CSRF保護照顧僅僅是以下幾點:

from django.shortcuts import render_to_response 
from django import forms 
from django.http import HttpResponseRedirect 
from django.template import Template, RequestContext 
from dash.forms import GradeForm 


def register(request): 
    if request.method == 'POST': 
     form = GradeForm(data=request.POST) 
     if form.is_valid(): 
      new_dash_profile = form.save() 
      new_user = form.save() 
      return HttpResponseRedirect("/success/") 
     else: 
      form = RegisterForm() 
     return render_to_response('grade.html',{'form':form}) 

回答

21

對我來說,最簡單的方法是將一個的RequestContext添加到功能選擇render_to_response

return render_to_response('grade.html', 
          {'form':form}, 
          context_instance=RequestContext(request)) 

這只是一種可能性,進口螞蟻的事情是,你應該在某處處理csrf令牌,並且RequestContext可以做到這一點。

的另一種可能性是手動執行IR:

from django.core.context_processors import csrf 

params = {} 
params.update(csrf(request)) 
return render_to_response('grade.html', params)