当前位置: 首页 > 面试题库 >

Django-在模板中使用了{%csrf_token%},但上下文未提供该值

潘琪
2023-03-14
问题内容

我是Django的新手,我仍在尝试掌握其功能。我使用Django 1.4.2创建了一个非常简单的项目,该项目的索引页面具有简单的形式,你可以在其中输入内容,结果页面在提交后显示输入内容(下面的代码)。

提交后,我收到错误403和以下消息:

在模板中使用了{%csrf_token%},但是上下文没有提供该值。这通常是由于未使用RequestContext引起的。warnings.warn(“模板中使用了{{csrf_token%},但是上下文没有提供该值。这通常是由于未使用RequestContext引起的。”)

index.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>

result.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>

views.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,则可以得到我想要的,但这不是我想要的答案。


问题答案:

index.html的呈现没有RequestContext。尝试这个:

def index(request):
    return render_to_response('index.html', context_instance=RequestContext(request))

我也建议你使用更方便的快捷方式render

from django.shortcuts import render

def index(request):
    return render('index.html')

从文档:

render()与使用context_instance参数(强制使用RequestContext)对render_to_response()的调用相同。



 类似资料:
  • 我试图用django管道编译静态,但无法在开发模式下为静态服务。由于我不是Django开发人员,我可能对Django为静态文件本身提供服务的方式有所误解。这是我的项目结构: 项目(项目本身) css 应用程序。斯蒂尔 媒体 当我使用共享静态时,我已经指定了指令来允许Django dev server和命令查找共享静态: 这是我的: 在我的模板中,我指定了CSS组: 因此,生成这样的HTML: 但返

  • ParameterResolver defines the Extension API for dynamically resolving parameters at runtime. If a test class constructor, test method, or lifecycle method (see Test Classes and Methods) declares a par

  • 问题内容: 当我在终端中键入命令时,它似乎可以正常工作- 成功下载所有库等。但是,在该过程结束时,我收到一条消息,提示您。 输入项 输出量 在的package.json中: 我检查了CRA 更改日志,看起来好像增加了对自定义模板的支持-但是看起来命令似乎没有更改。 知道这里发生了什么吗? 问题答案: 如果您以前通过进行了全局安装,建议您使用来卸载软件包,以确保始终使用最新版本。 文件 使用以下命令

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送唯一的登录网址即可,该网址设置了一个cookie,该cookie可以始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确保必

  • 问题内容: 我有一个奇怪的问题,我想使用上下文处理器添加全局查询。这是我通过以下方法做到的: 这样在我的应用中创建了一个processor.py: 并在我的setting.py结尾处添加了以下内容: 最后,我通过以下观点: 在我的index.html模板上: 最后是我的网址: 我的foos显示没有问题,但是我的media_url和其他上下文消失了。可能是什么问题 问题答案: 当你指定时: 在设置文

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送一个唯一的登录URL,该URL就会设置一个cookie,该cookie将始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确