bgc*_*ode 13 django django-templates django-csrf
这是模板中HTML的相关片段:
<form action="/submit_text/" method="post">
{% csrf_token %}
{% include "backbone/form_errors.html" %}
{{form.as_p}}
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的settings.py MIDDLEWARE_CLASSES声明:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
CSRF令牌根本不显示,导致a
禁止(403)CSRF验证失败.请求中止.
Sam*_*lan 22
你需要传入RequestContext你render_to_response的上下文处理器来实际运行.
from django.template import RequestContext
context = {}
return render_to_response('my_template.html',
context,
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
新的render快捷方式(django 1.3+)将为您完成:
from django.shortcuts import render
context = {}
return render(request, 'my_template.html', context)
Run Code Online (Sandbox Code Playgroud)
虽然有一个经过检查的答案,但我想指出写作context_instance....真的很烦人.我觉得这很有用......特别是forms
context.update(csrf(request))
Run Code Online (Sandbox Code Playgroud)