如何读取 csv django http 响应

2024-03-01

在视图中,我使用简单的 csv writer 创建一个完全由 csv 组成的 Django HttpResponse 对象:

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="foobar.csv"'

writer = csv.writer(response)

    table_headers = ['Foo', 'Bar']
    writer.writerow(table_headers)

    bunch_of_rows = [['foo', 'bar'], ['foo2', 'bar2']]
    for row in bunch_of_rows:
        writer.writerow(row)

return response

在单元测试中,我想测试这个 csv 的某些方面,所以我需要阅读它。我正在尝试这样做:

response = views.myview(args)

reader = csv.reader(response.content)

headers = next(reader)
row_count = 1 + sum(1 for row in reader)

self.assertEqual(row_count, 3) # header + 1 row for each attempt
self.assertIn('Foo', headers)

但测试失败并显示以下内容headers = next(reader) line:

nose.proxy.Error: iterator should return strings, not int (did you open the file in text mode?)

我在 HttpResponse 源中看到response.content正在将字符串作为字节字符串吐出,但我不确定处理它的正确方法让csv.reader正确读取文件。我以为我可以更换response.content with response(因为您写入对象本身,而不是其内容),但这只会导致错误略有变化:

_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

这看起来更接近,但显然仍然是错误的。正在阅读csv文档,我假设我无法正确打开文件。我如何“打开”这个类似文件的对象,以便csv.reader可以解析吗?


response.content提供字节。您需要将其解码为字符串:

foo = response.content.decode('utf-8')

然后使用 io.StringIO 将此字符串传递给 csv 读取器:

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

如何读取 csv django http 响应 的相关文章

随机推荐

  • 为什么在属性声明中只使用setter?

    int MyProperty set 在财产上仅使用 setter 的想法是什么 如果我们为一个属性设置某个值 我猜它很可能在某个时刻读取该值 只写属性在基类库中很少见 但是XmlReaderSettings XmlResolver htt
  • 主机名与证书主题不匹配

    当我尝试构建我的 android 项目时 我收到此 gradle 错误 我正在使用 cwac cam 库 错误 主机名 repo commonsware com s3 amazonaws com 与对等方提供的证书主题不匹配 CN s3 a
  • 当我们开始旋转设备时以及旋转完成后将调用什么方法

    我想以编程方式检测 ipad 上的旋转过程 在这种情况下 我想在旋转开始时将布尔值设置为 yes 并在旋转结束后将其设置为 false 是否有任何方法在旋转开始和旋转结束时调用 来自苹果文档 在用户界面开始旋转之前发送到视图控制器 void
  • Flex 项目未包装在列方向容器中

    我想用flex direction column对于特定的布局 我通常使用标准flex direction row 所以我在使用时遇到了一些问题column 我不太知道如何控制它 并且在谷歌上没有找到任何有用的东西 我有一个常规的UL列表
  • 从 picasso 获取图像 uri?

    我有一个相当大的图像 URL 列表 我用它来加载ViewPager使用毕加索 我需要能够通过意图为这些图像提供共享功能 最终通过共享操作提供者 http developer android com guide topics ui actio
  • 从扫描的 GS1 类型条形码中提取信息

    我还想从扫描的 GS1 条形码消息中确定产品信息 例如描述 制造商和有效期 我怎样才能做到这一点 获取以 GS1 应用标识符标准格式存储数据的 GS1 类型条形码所表示的信息涉及两个过程 萃取通过扫描符号获得的 GS1 结构数据中包含的数据
  • CSS Jquery 垂直导航菜单与水平子菜单

    我想创建一个像这样的导航菜单 main item1 main item2 sub item1 sub item2 sub item3 main item3 main item4 我现在看到的是这样的 main item1 main item
  • 在 ASP.NET Boilerplate 中上传图像

    发布图片时 HttpContext Current Request is null 有什么简单的方法可以实现这一目标吗 我在用dropzone js在客户端 项目是带有 Web API ASP NET Core 2 0 模板的 Angula
  • yii2 在 gridview 中更改控制器操作

    我有 ItemController 并在 actionView 中放置了 Itempicture 的 gridview 我希望当我单击图标视图时 更新和删除 然后转到 ItempictureController 那么如何使用不同的控制器更改
  • Unicode - VARCHAR 和 NVARCHAR

    Creating Table Create Table Test1 id Varchar 8000 Inserting a record Insert into Test1 Values 我們的鋁製車架採用最新的合金材料所製成 不但外型輕巧
  • 在浏览器中呈现终端输出

    我有一个文件 其中包含用以下命令捕获的一堆终端日志screen公用事业 这是一个片段 A 0m 27m 24m J 34m 39m base 38 5 242mbase 39m 35m 39m 133 B K 1l gt 2004l A 0
  • 使用 jQuery 离开页面

    我只有一个可用的相对链接 但我想使用 jQuery 导航到这个相对链接 我只在 jQuery 中看到 AJAX 功能 我如何使用 jQuery 或纯 HTML JavaScript 来做到这一点 window location href s
  • Xcode 脚本上的相对路径

    我正在尝试使用 Xcode 运行脚本 但有几个问题 1 Xcode 说将脚本拖放到运行脚本部分 但这会创建一个绝对路径 Users Me Desktop Project etc 如果其他人或 CI 机器检查了代码 这显然是没有用的 如何指定
  • C++ 开关仅适用于整型的理由是什么? [复制]

    这个问题在这里已经有答案了 我觉得C 应该允许switch 超过任何可以比较的类型 而不仅仅是整数类型 看起来很奇怪的是 switch myEnum case myEnumValue1 break case myEnumValue1 bre
  • 创建一个基于查询字符串重定向或使用 .htaccess 的 PHP 页面

    我购买了重力形式 WordPress 插件 但遇到了一个问题 它无法根据用户的输入将用户重定向到特定的 URL 然而 一位开发人员确实告诉我 它具有重定向到页面并根据输入引入查询字符串的功能 我需要做的就是在页面上使用 PHP 根据查询字符
  • 在 Chrome 中选择相同文件时,FileReader onload 不会被触发

    FileReader onload当用 Chrome 选择同一个文件时 第二次不会被触发 而 FireFox 总是会被触发 function uploadCover input if input files input files 0 va
  • 什么是带有 activesupport time_zone 的“循环参数引用”错误?

    我是 ruby on Rails 的新手 我正在尝试创建一个教程 我执行的时候遇到问题rake db migrate hugo ubuntu pin board rake db migrate home hugo rvm gems ruby
  • 如何将构建过程参数放入TFS中的类别中?

    当我打开构建定义时 我可以看到参数被分成带有数字前缀的部分 例如1 基本 2 其他等 但是 当我编辑 xaml 时 没有指示这些类别的定义位置 有人可以提供一些关于它们在参数列表中的位置的指导吗 这是一个类似的问题 只是发布者询问了基于构建
  • 如何以react hook形式验证密码并确认密码?反应钩子形式是否有任何验证属性和消息来显示错误?

    实际上 我尝试验证表单并卡住以验证密码并确认密码 中是否有任何属性useForm在最新版本中验证密码并以反应钩子形式显示消息 请帮忙 实际上 我尝试验证表单并卡住以验证密码并确认密码 中是否有任何属性useForm在最新版本中验证密码并以反
  • 如何读取 csv django http 响应

    在视图中 我使用简单的 csv writer 创建一个完全由 csv 组成的 Django HttpResponse 对象 response HttpResponse content type text csv response Conte