我遇到任何调用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))
答案 0 :(得分:1)
您使用了错误的参数render_to_response
。它应该是context_instance=RequestContext(request)
。
由于您并未使用RequestContext,因此任何上下文处理器都不起作用。一旦你更换它,就不再需要手动添加CSRF令牌了。
content_type
完全是另一回事 - 响应的MIME类型。由于它不期望RequestContext实例,因此有点令人惊讶,这不会引发错误。