推荐的方法是使用render
而不是render_to_response
.代码更简单,CSRF令牌将起作用,因为render
它将使用请求上下文来呈现模板.
return render(request, 'registration/register.html', {'form': RegistrationForm()})
文档建议您不要使用render_to_response
.在Django 1.10之前,您可以手动传递a RequestContext
作为第三个参数,但这在Django 1.10+中是不可能的.您使用a RequestContext
作为第二个参数是不正确的 - 第二个参数应该是常规字典.
最后,请注意,当表单无效时,您不会返回响应.您可以通过稍微调整代码来解决此问题:
if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): ... return HttpResponseRedirect('/register_success/') else: form = RegistrationForm() return render(request, 'registration/register.html', {'form': form})