2011-04-17 30 views
9

Nếu tôi bao gồm {% csrf_token%} trong mẫu hình thức của tôi và RequestContext nhập khẩu theo quan điểm của tôi,django CSRF RequestContext

tôi phải bao gồm bất cứ điều gì khác trong quan điểm của tôi hoặc bảo vệ CSRF sẽ được đưa về chăm sóc chỉ có điều sau đây:

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}) 

Trả lời

21

Đối với tôi, cách dễ nhất là thêm một RequestContext đến chức năng render_to_response

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

Đây chỉ là một khả năng, việc nhập khẩu điều kiến ​​là bạn nên xử lý mã thông báo csrf ở đâu đó và RequestContext thực hiện điều đó.

Một khả năng khác là để làm ir bằng tay:

from django.core.context_processors import csrf 

params = {} 
params.update(csrf(request)) 
return render_to_response('grade.html', params) 
Các vấn đề liên quan