django csrf RequestContext - PullRequest
       10

django csrf RequestContext

9 голосов
/ 17 апреля 2011

Если я включу {% csrf_token%} в шаблон формы и импортирую 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})

1 Ответ

21 голосов
/ 17 апреля 2011

Для меня самый простой способ - добавить RequestContext в функцию render_to_response

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

Это всего лишь одна возможность, важно то, что вы должны где-то обработать токен csrf, а RequestContext сделает это.

Другая возможность - сделать это вручную:

from django.core.context_processors import csrf

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