render_to_string 和 response.content.decode() 不匹配

2023-11-27

我正在写我的第一个Django跟随本书一起学习应用程序:

http://chimera.labs.oreilly.com/books/1234000000754/ch05.html#_passing_python_variables_to_be_rendered_in_the_template

书中有一个测试,用于验证 html 是否按预期返回。这是测试:

def test_home_page_returns_correct_html(self):
        request = HttpRequest()
        response = home_page(request)
        expected_html = render_to_string('home.html')
        print(expected_html)
        print(response.content.decode())
        self.assertEqual(response.content.decode(), expected_html)

我的测试失败了assertEqual测试因为我添加了一个csrf token在我的 HTML 中使用Django Template Language。我的 HTML 页面如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>To-Do lists</title>
</head>
<body>
    <h1>Your To-Do list</h1>
    <form method="POST">
            <input name="item_text" id="id_new_item" placeholder="Enter a to-do item"/>
            {% csrf_token %}
    </form>

    <table id="id_list_table">
        <tr><td>{{ new_item_list }}</td></tr>
    </table>
</body>
</html>

我的断言失败的原因是render_to_string方法不包括令牌。这是我的两个print我的测试打印输出中包含的语句:

F<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>To-Do lists</title>
</head>
<body>
    <h1>Your To-Do list</h1>
    <form method="POST">
            <input name="item_text" id="id_new_item" placeholder="Enter a to-do item"/>

    </form>

    <table id="id_list_table">
        <tr><td></td></tr>
    </table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>To-Do lists</title>
</head>
<body>
    <h1>Your To-Do list</h1>
    <form method="POST">
            <input name="item_text" id="id_new_item" placeholder="Enter a to-do item"/>
            <input type='hidden' name='csrfmiddlewaretoken' value='VAiGvXZLHCjxWEWdjhgQRBwBSnMVoIWR' />
    </form>

    <table id="id_list_table">
        <tr><td></td></tr>
    </table>
</body>
</html>
F.

他在书中没有这个问题(他正在使用1.8),所以我想知道方法行为是否发生了变化,或者我将如何编写这个测试才能通过。


The request参数被添加到render_to_string在 Django 1.8 中。您可以尝试将测试中的行更改为:

expected_html = render_to_string('home.html', request=request)

只需要在 Django 1.9+ 中进行此更改,在 Django 1.8 中无需请求即可测试通过。

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

render_to_string 和 response.content.decode() 不匹配 的相关文章

  • 并行执行按位运算的代码

    我有这段代码 通过将该 AU 矩阵的每个字节 8 个元素打包到 A 中来减少内存消耗 从而使 100k 200k 矩阵占用更少的空间 正如您所期望的 这段代码需要永远运行 我也计划将行数增加到 200k 我正在一个非常强大的实例 CPU 和
  • 在 Python 中解压存档时出现错误

    我使用 Python 下载 bz2 文件 然后我想使用以下方法解压存档 def unpack file dir file cwd os getcwd os chdir dir print Unpacking file s file cmd
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 使用 pytherejs 嵌入小部件:错误的视角和相机观察

    我在用pythreejs可视化一些 3D 模型 在 Jupyter 笔记本上可视化模型时 一切都按预期进行 但是当尝试将小部件嵌入 HTML 文档时 我面临两个问题 看起来相机在加载时正在查看 0 0 0 而不是预期的那样 一旦您与小部件交
  • os.walk 无需深入研究下面的目录

    我该如何限制os walk只返回我提供的目录中的文件 def dir list self dir name whitelist outputList for root dirs files in os walk dir name for f
  • python osmnx - 仅提取一个国家的大型高速公路

    我知道可以通过 OSMNX python 包提取城市的道路网络 详情请参阅https geoffboeing com 2016 11 osmnx python street networks https geoffboeing com 20
  • python 函数中的对象不可迭代错误

    我有一个简单的功能如下 comdList range 0 27 for t in comdList print t 但是它返回一个 in object not iterable 错误 在函数之外它工作正常 这是怎么回事 尝试这个 for t
  • 将“http://”添加到尚未包含“http://”的 URL 前面

    我有一个input保存 URL 的字段 我希望这个保存的输入能够识别变量开头不存在 Http 但不知道从哪里开始 是否可以仅检查字符串的一部分 然后有一个在必要时追加的函数 如果您还想允许 https 我会使用如下正则表达式 if http
  • 使用 SQLAlchemy 查询 Pandas DataFrame 时重命名列

    当您将数据查询到 pandas 数据帧时 有没有办法保留 SqlAlchemy 属性名称 这是我的数据库的简单映射 对于 school 表 我将数据库名称 SchoolDistrict 重命名为较短的 district 我从 DBA 中删除
  • Python父类访问子私有变量

    以下代码会生成错误 class A object def say something self print self foo print self bar class B A def init self self foo hello sel
  • python请求ssl握手失败

    每次我尝试这样做 requests get https url 我收到这条消息 import requests gt gt gt requests get https reviews gethuman com companies Trace
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • 如何隐藏 Tkinter python Gui

    有人知道如何隐藏 python GUI Tkinter 我已经创建了键盘记录器 对于 GUI 我使用了 python 模块 Tkinter 我想添加名为 HIDE 的按钮 因此当用户单击它时 它将隐藏 GUI 当用户按下 CTRL E 之类
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • 如何在不创建新对象的情况下更新用户对象?

    以下在 shell 中工作正常 gt gt gt from django contrib auth models import User gt gt gt user User objects get pk 1 gt gt gt user f
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • 如何限制单元测试的最大运行时间?

    我目前正在运行一些单元测试 这些测试可能需要很长时间才能失败或无限期地运行 在成功的测试运行中 它们总是会在一定的时间内完成 是否可以创建一个 pytest 单元测试 如果在一定时间内未完成 该测试就会失败 您可以安装 pytest tim
  • 获取 Flask 中没有端口的请求主机名

    我刚刚设法使用 Flask 获取我的应用程序服务器主机名request host and request url root 但这两个字段都返回请求主机名及其端口 我想使用仅返回请求主机名的字段 方法 而无需进行字符串替换 如果有 没有 We
  • 定义Python类时,如何在其中设置随机变量?

    假设我有一个名为Person 其中只有该人的姓名和性别 性别应从男性和女性中随机选择 为此 我导入random randint 功能 根据随机int确定随机性别 import random class Person alias random

随机推荐

  • 如何将复选框作为 dataGridView 的 ColumnHeader

    我正在 C VS2005 中开发一个窗口应用程序 我有一个 dataGridView 其中第一列有复选框 现在我希望列标题也成为一个复选框 如果我选择列中的所有复选框 则应选择该复选框 我怎样才能做到这一点 我提到了代码项目链接 但如果我使
  • 如何获得以赫兹为单位的 DFT/FFT 输出频率?

    我想开发音符检测器作为我的学位项目 并且我想从头开始 我已经为 wav 文件编写了代码 该文件从该音频音乐文件中提取所有信息并给出振幅 然后我编写了 DFT 代码 它以复数形式输出 其中轴 实数 虚数 之一是幅度 幅度 另一个轴是相位 现在
  • 使用 xmlSerializer.Serialize 和 IEnumerable 对象序列化对象

    我有一个对象 其中包含一个定义为 IEnumerable 的对象 即 Serializable XmlRoot MyObject public class MyObject XmlAttribute public string Name g
  • Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性

    我正在为我的应用程序开发一个 REST 接口 使用 Jackson 将我的 POJO 域对象序列化为 JSON 表示形式 我想自定义某些类型的序列化 以向 POJO 中不存在的 JSON 表示添加其他属性 例如添加一些元数据 参考数据等 我
  • 如何防止 Google Colab 断开连接?

    有没有办法以编程方式阻止谷歌合作实验室超时断开连接 以下描述了笔记本电脑自动断开连接的情况 Google Colab 笔记本的空闲超时为 90 分钟 绝对超时为 12 小时 这意味着 如果用户超过 90 分钟没有与其 Google Cola
  • 为什么 x86_64 CPU 上没有通用寄存器的乘加融合?

    在 Intel 和 AMD x86 64 处理器上 SIMD 矢量化寄存器具有特定的融合乘加功能 但通用 标量 整数 寄存器don t 你基本上需要先乘法 然后加法 除非你可以将东西放入一个lea 这是为什么 我的意思是 它是否毫无用处以至
  • iOS 9 Facebook SDK 登录/分享

    我在 iOS 9 上使用最新的 Facebook SDK 4 6 时遇到了问题 为了授权用户 我使用 FBSDKLoginManager 我尝试过这样设置 loginManager loginBehavior FBSDKLoginBehav
  • 使用 python 将分隔字符串列表转换为树/嵌套字典

    我正在尝试转换点分隔字符串的列表 例如 one two three four one six seven eight five nine ten twelve zero 进入一棵树 嵌套列表或字典 任何易于遍历的东西 真实数据恰好有1到4个
  • powershell 过滤 csv

    由于我是 Powershell 新手 因此寻求有关最佳实践的帮助 我有一个 csv 文件 我想过滤掉 csv 中的每一行 但包含 未安装 的行除外 然后 我想根据包含计算机列表的单独 csv 文件过滤这些结果 并排除包含匹配项的任何行 任何
  • 关闭浏览器窗口后是否有可能如何发送 AJAX? [复制]

    这个问题在这里已经有答案了 关闭浏览器窗口后是否有可能如何发送AJAX 我有一个使用 JavaScript jQuery 进行移动的浏览器游戏 如果我在每次移动后发送 Ajax 这对服务器来说会很困难 所以我想在用户关闭窗口 或书签 时发送
  • 在 C# 中获取重叠的正则表达式匹配

    我有正则表达式1 0 1和测试字符串1000010001 我想要 2 场比赛 但我发现只找到 1 场 var regex new Regex 1 0 1 var values regex Matches intBinaryString va
  • 用于虚拟机映像的二进制差异和补丁实用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要经常发布一些软件 并且该软件包含为VMWare磁盘文件 即 vmdk文件 我想要的是某种二进制差异和补丁实用程序 以使生成的增量尽可能小 让我
  • R 中的轮廓图

    我有一组数据 其中包含 项目 关联簇 轮廓系数 如有必要 我可以使用更多信息进一步扩充该数据集 我想在 R 中生成轮廓图 我在这方面遇到了麻烦 因为我遇到的示例使用内置的 kmeans 或相关 聚类函数并绘制结果 我想绕过此步骤并为我自己的
  • 如何在 php.ini 中启用 oci8 (Oracle) 扩展 - PHP 警告:PHP 启动:第 0 行未知

    我有 Windows XP 最近安装了 wamp apache mysql php 32 位 我测试了安装 使用 php 和 apache 连接到 mysql 数据库 一切正常 现在我需要连接到 Oracle 数据库 因此我尝试启用一些扩展
  • jquery on 带/不带选择器参数和 jquery delegate 有什么区别?

    我正在使用jquery 1 10 我想知道这三个函数有什么区别 哪个功能更好 为什么 委托功能的目的是什么 dropdown menu on click show opt menu function alert hello dropdown
  • 毕加索图像缓存

    我想下载以下带有毕加索图像缓存的图像下载代码 DownloadImage downloadImage new DownloadImage downloadImage execute advert getImgUrl private clas
  • 在 SwiftUI 中使用时间间隔的 DatePicker

    我想在 SwiftUI 中使用 DatePicker 它工作正常并且符合预期 我想添加一个时间间隔 如所解释的 UIDatePicker 15 分钟增量 Swift DatePicker Please enter a time select
  • 2 个不同的小查询与 1 个带子查询的查询

    我有这样的桌子 name personal number Jon 222 Alex 555 Jon 222 Jimmy 999 我需要获取每个名字 其中个人号码在表中重复超过 1 个 即结果必须是 Jon Jon 因此 变体 1 SELEC
  • Django:覆盖 get_FOO_display()

    一般来说 我不熟悉 python 重写方法和使用 super 的方式 问题是 我可以覆盖get FOO display class A models Model unit models IntegerField choices someth
  • render_to_string 和 response.content.decode() 不匹配

    我正在写我的第一个Django跟随本书一起学习应用程序 http chimera labs oreilly com books 1234000000754 ch05 html passing python variables to be r