查询调用context.update(csrf(request))的问题

时间:2014-04-05 06:17:15

标签: python django django-templates django-views

我遇到任何调用context.update(csrf(request))在通过POST调用的页面上设置csrf的视图的问题。这个问题基本上是我不能使用任何自定义上下文处理器或{% if user.is_authenticated %}

之类的

我在RequestContext(request)

上使用render_to_response

有关解决此问题的任何想法吗?

if not request.POST:
    return HttpResponseRedirect('/')
searchpilotidform = searchpilotid()
searchcallsignform = searchcallsign()
searchairportform = searchairport()
searchairportpairform = searchairportpair()

searchpilotnameform = searchpilotname()
pilots = cid.objects.filter(realname__icontains=request.POST['name'])
context = {'searchairportpairform': searchairportpairform, 'searchpilotnameform': searchpilotnameform, 'searchpilotidform': searchpilotidform, 'query': request.POST['name'], 'pilots': pilots, 'searchcallsignform': searchcallsignform, 'searchairportform': searchairportform}
context.update(csrf(request))
return render_to_response('pilotnamesearch.html', context, content_type=RequestContext(request))

1 个答案:

答案 0 :(得分:1)

您使用了错误的参数render_to_response。它应该是context_instance=RequestContext(request)

由于您并未使用RequestContext,因此任何上下文处理器都不起作用。一旦你更换它,就不再需要手动添加CSRF令牌了。

content_type完全是另一回事 - 响应的MIME类型。由于它不期望RequestContext实例,因此有点令人惊讶,这不会引发错误。