我是 Django 新手,我仍在努力掌握它的功能。我用Django 1.4.2创建了一个非常简单的项目,该项目具有简单形式的索引页面,您可以在其中输入内容,并在提交后显示您的输入的结果页面(代码如下)。
提交后,我收到错误 403 和以下消息:
模板中使用了 {% csrf_token %},但上下文未提供该值。这通常是由于没有使用 RequestContext 造成的。warnings.warn("模板中使用了 {% csrf_token %},但上下文没有提供值。这通常是由于未使用 RequestContext 造成的。")
索引.html
<!DOCTYPE html>
<head>
<title>Index page</title>
</head>
<body>
<div id="header">Welcome to index page</div>
<div id="content">
<p>Enter your name</p>
<form action="/result/" method="post" accept-charset="utf-8">{% csrf_token %}
<input type="text" name="answer">
<input type="submit" value="Send!">
</form>
</div>
</body>
结果.html
<!DOCTYPE html>
<head>
<title>Result page</title>
</head>
<body>
<div id="header">Here is the result</div>
<div id="content">
<p>Your name is: {{ answer }}</p>
</div>
</body>
视图.py
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
def index(request):
return render_to_response('index.html')
def result(request):
p = request.POST['answer']
return render_to_response('result.html', {'answer': p}, context_instance=RequestContext(request))
我查看了 Internet 上的文档和各种示例,但我不明白我做错了什么。如果我在settings.py中禁用django.middleware.csrf.CsrfViewMiddleware,我会得到我想要的,但这不是我正在寻找的答案。
我感谢更有经验的 Django 忍者的帮助:-)