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

2024-01-12

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

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

模板中使用了 {% csrf_token %},但上下文没有 提供价值。这通常是由于没有使用引起的 请求上下文。 warnings.warn("A {% 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>

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))

我查看了互联网上的文档和各种示例,但我不明白我做错了什么。如果我禁用django.middleware.csrf.CsrfViewMiddleware in 设置.py,我得到了我想要的,但这不是我正在寻找的答案。

我感谢更有经验的 Django 忍者的帮助:-)


Your index.html渲染时没有RequestContext。尝试这个:

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

我还建议您使用更方便的快捷方式render https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render:

from django.shortcuts import render

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

来自文档:

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

EDIT:

Thanks @nerdwaller https://stackoverflow.com/u/1584762/值得一提的是,新版本现在需要:

render(request, 'index.html', {params});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - {% csrf_token %} 在模板中使用,但上下文未提供值 的相关文章

随机推荐

  • 将矩阵的子部分替换为 numpy 中的另一个小矩阵

    我是 Numpy 新手 想要替换矩阵的一部分 例如 我有两个矩阵 A B由numpy生成 In 333 A ones 5 5 In 334 A Out 334 array 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • JavaFX 导致 X 服务器崩溃

    背景 背景 我目前正在开发一个旨在在 Linux 上运行的触摸屏应用程序 作为开发框架 我选择 JavaFX jdk1 7 0 10 因为它易于快速构建原型 我使用的是 Arch Linux 内核 3 6 10 1 ARCH 发行版 并且由
  • 如何将变量键/值对添加到列表对象?

    我有两个变量 key and value 我想将它们作为键 值对添加到列表中 key width value 32 mylist list mylist key value 结果是这样的 mylist key 1 32 但我想要这个 myl
  • 如何使用反射检查方法是否是静态的?

    我想在运行时仅发现类的静态方法 我该怎么做 或者 如何区分静态方法和非静态方法 Use Modifier isStatic method getModifiers Returns the public static methods of a
  • 如何在给定 AWS Cognito access_token 的情况下获取 AWSCredentials

    在 Android 应用程序中 我收到 JWT access tokenhttp
  • 在 Chrome 中调试 webgl

    我有一个在 chrome 中运行的 webgl 页面 chrome 时不时会报如下错误 WebGLRenderingContext GL 错误 GL INVALID OPERATION glDrawElements 尝试在没有附加到启用属性
  • Oracle 触发器创建自动编号

    我以前从未在 Oracle 中创建过触发器 所以我正在寻找一些方向 我想创建一个触发器 如果 ID 不在插入语句中 则将 ID 加一 ID 应从 10000 开始 插入记录时下一个 ID 应为 10001 如果插入语句包含 ID 则应覆盖自
  • 从用户应用程序访问 Ring 0 模式(以及 Borland 允许这样做的原因)

    随着学期截止日期的临近 我决定开始在我的大学开展操作系统课程的项目 项目作业的问题在于它要求学生开发一个用户应用程序 exe 将作为一个简单的内核执行 基本进程和线程管理 我首先想到的是 我到底该如何在用户应用程序中执行特权代码 在咨询了其
  • 如何在同一个 Visual Studio 项目中混合使用 Node.js 和 Typescript?

    Visual Studio 有一个打字稿用于使用 Typescript 语言开发应用程序的插件 而且还有Node jsVS 工具 可以用来创建和调试 Node js 应用程序 我尝试创建一个 Node js 项目 但是无法向其中添加 Typ
  • 从单元测试运行时,CATextLayer 不会出现在 AVMutableComposition 中

    编辑 最奇怪的事情 似乎当从完整的应用程序运行此代码时 一切正常 但我总是从单元测试中运行电影的创建 只有在那里它不起作用 试图弄清楚为什么会这样 我正在尝试使用 AVMutableComposition 组合视频 音频 文本并将其导出到新
  • 如何为 Django 启用 WSGIPassAuthorization?

    我正在测试 Django API 端点 但我需要启用 WSGIPassAuthorization 才能接收 Authorization 标头 我应该在哪里启用它 PS 我使用的是 macOS 但任何答案都可能有用 如果您正在使用mod ws
  • Mac 事件点击只是延迟丢弃的事件

    我正在尝试编写一些代码 在 Mac OSX 10 6 上启用时丢弃所有键盘和鼠标事件 我的代码以 root 用户身份运行 我采取的方法是创建一个事件水龙头 丢弃传递给它的所有事件 启用时 事件点击回调函数如下所示 CGEventRef My
  • div 内的点击位置

    我试图获取 div 内单击的位置 以便当我在鼠标拖动移动窗口时定位窗口时 鼠标光标将恰好位于初始单击发生的位置 相对于移动窗口 这是窗口 div class Popup div img class xOut src images xOut
  • 叮叮当当“你好,世界!” Windows 中的链接错误

    我刚刚下载了 CLang 源代码 使用 CMake 创建了 Visual C 10 IDE 工作区 并从 Visual C 10 0 express 构建了所有内容 现在我在 hello world 上收到一堆链接器错误 d dev tes
  • 如何在golang中编写bson形式的mongo查询?

    我可以使用命令行查询查询我的 mongodb 集合 以根据 nfType 和最小距离获取 ipv4Addresses db nfinstancesdb aggregate match nfType AMF unwind ipv4Addres
  • 如何解密MySQL密码

    创建我公司使用的平台的开发人员不再为我们工作 我不知道如何从自定义 PHP 应用程序检索密码 当我查看 PHPmyAdmin 时 密码已加密 例如 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 我如何更改
  • 如何禁用布局中的所有按钮?

    应用程序的工作方式如下 应用程序向用户提示 30 个按钮 用户可以通过点击猜出正确的按钮 当用户点击某个按钮时 所有按钮 例如包含这些按钮的视图 都应该被锁定 同时播放相应的 正确或错误的猜测 动画 点击的按钮本身应该被禁用 直到下一轮 动
  • 停止 Chrome 标签页睡眠/休眠

    如何阻止 Chrome 的选项卡睡眠 休眠 我正在运行 左轮手枪 扩展 我希望在循环之前重新加载选项卡 但是 chrome 的选项卡似乎处于休眠状态 因此在选项卡处于 活动 状态之前不会重新加载 并且显示 有解决方法吗 来自 wOxxOm
  • ember-data DS.RESTAdapter 导致 TypeError

    我正在尝试使用 Ember js 和 ember data 并且定义了以下应用程序 window App Ember Application create App store DS Store create revision 4 adapt
  • Django - {% csrf_token %} 在模板中使用,但上下文未提供值

    我是 Django 的新手 我仍在尝试掌握它的功能 我创建了非常简单的项目姜戈 1 4 2它有简单形式的索引页面 您可以在其中输入内容 还有结果页面 您的输入在提交后显示 代码如下 提交后 我收到错误 403 和以下消息 模板中使用了 cs