这里是DJango的初学者,我一直试图解决这个问题很长一段时间.我的中间件类中有'django.middleware.csrf.CsrfViewMiddleware',我的帖子中有令牌.
继承我的代码,我做错了什么?
from django.contrib.auth.forms import UserCreationForm from django.shortcuts import render_to_response from django.http import HttpResponseRedirect from chartsey.authentication.forms import RegistrationForm from django.template import RequestContext from django.core.context_processors import csrf def register(request): if request.method == 'POST': c = RequestContext(request.POST, {}) form = RegistrationForm(c) if form.is_valid(): new_user = form.save() return HttpResponseRedirect("/") else: form = RegistrationForm() return render_to_response("register.html", {'form': form, }, )
这是我的模板:
{% block content %}{% endblock %}Register
Yuji 'Tomita.. 24
我的猜测是你在模板中有标签,但它没有呈现任何东西(或者你的意思是你在实际的HTML中确认正在生成CSRF令牌?)
要么使用render
而不是字典
render_to_response("foo.html", RequestContext(request, {}))
或者确保您拥有return render(request, 'template.html')
自己的RequestContext
设置.
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
或者手动将令牌添加到您的上下文中
我的猜测是你在模板中有标签,但它没有呈现任何东西(或者你的意思是你在实际的HTML中确认正在生成CSRF令牌?)
要么使用render
而不是字典
render_to_response("foo.html", RequestContext(request, {}))
或者确保您拥有return render(request, 'template.html')
自己的RequestContext
设置.
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
或者手动将令牌添加到您的上下文中
只需将其添加到您的视图即可
return render_to_response("register.html", {'form': form, }, context_instance = RequestContext(request))
它会工作!!