【问题标题】:django csrf RequestContextdjango csrf RequestContext
【发布时间】:2011-08-07 04:36:48
【问题描述】:

如果我在我的表单模板中包含 {% 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})

【问题讨论】:

    标签: django django-templates django-forms


    【解决方案1】:

    对我来说,最简单的方法是在 render_to_response 函数中添加一个 RequestContext

    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)
    

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2011-10-09
      • 1970-01-01
      • 2015-02-05
      • 2012-09-06
      • 1970-01-01
      • 2014-08-31
      • 2021-03-25
      • 1970-01-01
      相关资源
      最近更新 更多