当前位置: 首页 > 知识库问答 >
问题:

无法从Django发送HttpACK

苏运良
2023-03-14

我正在尝试发送添加了标题的JSON格式。csv格式到前端进行下载。在发送HTTP响应时,我遇到了一个“不是JSON可序列化的”错误。

我的 views.py 文件:

from datetime import datetime
from django.shortcuts import render
from django.http import HttpResponse
import json as simplejson
import random
import csv

def DownloadEventLog(request):
    downloadeventlog = "[{\"severity\":\"0\",\"description\":\"USB Connected\",\"date\":\"01/01/2015\",\"time\":\"11:35:20\"},{\"severity\":\"3\",\"description\":\"USB Disconnected\",\"date\":\"01/01/2015\",\"time\":\"10:30:19\"}]";

    data = simplejson.loads(downloadeventlog)
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="eventlog.csv"'

    writer = csv.writer(response)
    writer.writerow(data[0].keys())
    for row in data:
        writer.writerow(row.values())
    print response
    return HttpResponse(simplejson.dumps(response), content_type = "application/json")

打印响应cmd正在打印:

Content-Type: text/csv
Content-Disposition: attachment; filename="eventlog.csv"

date,time,severity,description
01/01/2015,11:35:20,0,"USB Connected"
02/02/2015,10:30:19,3,"USB Disconnected"

但是,最后一行会抛出如下错误:

TypeError at /eventlog/downloadeventlog
<django.http.response.HttpResponse object at 0x9c059ec>is not JSON serializable

Request Method: POST
Request URL: http://127.0.0.1:8001/eventlog/downloadeventlog
Django Version: 1.7.1
Python Version: 2.7.3

共有3个答案

充小云
2023-03-14

你应该在这里使用django的序列化程序:
https://docs.djangoproject.com/en/dev/topics/serialization/

相关问题在这里:

裴理
2023-03-14

您可以只返回< code>response,而不需要将其包装在< code>HttpResponse中。

return response
相高谊
2023-03-14

simplejson和json不能很好地处理django对象。

Django的内置序列化器只能序列化填充有django对象的查询集:

**** To use ****

data = serializers.serialize('json', self.get_queryset())
return HttpResponse(data, mimetype="application/json")

希望这有帮助

 类似资料:
  • 我的: 但是邮件不会发送到该地址,在控制台中,当我单击时,正在打印,但它不会发送任何电子邮件。 我用的是Django 1.3.7和Python 2.6。 不知道是版本的问题还是什么逻辑问题。

  • 我试图使用eclipse或intellij向api发送get请求,作为使用java/jUnit和放心框架工作的测试的一部分。 每个请求都失败,并显示以下消息 2018年3月13日下午1:29:56组织。阿帕奇。http。impl。客户DefaultHttpClient tryConnect信息:连接到{s}时捕获到I/O异常(java.net.SocketException)- 顺便说一句,我正在

  • 主要内容:发送一个简单的电子邮件,,发送带有 send_mass_mail 多个邮件,发送HTML E-mail,,发送带附件的电子邮件Django提供了一个现成的,易于使用发送电子邮件的轻型引擎。类似Python,你需要导入 smtplib。在Django中只需要导入django.core.mail。 要发送电子邮件,编辑项目settings.py文件,并设置下列选项 − EMAIL_HOST − smtp 服务器 EMAIL_HOST_USER − 登录凭证SMTP服务器 EMAIL_HOS

  • 问题内容: 我有一个很简单的模型可以工作: 我知道我在signal.py中的create_badge函数有效。如果我发送的邮件没有发送者的值,则表示发送者是LogEntry对象。我想要/需要在post_save脚本中引用一些实例信息,如下所示: 我在哪里可以打电话给我的post_save呼叫,以便它知道Badge(我以为这是解决办法? 谢谢。 问题答案: 定义徽章 后, 只需将信号与sender

  • 我必须在窗口对象中存储一些数据,以便在前端渲染中使用它。我有一个模型: 我有一个观点: 我想检索作为JSON对象并将其存储在对象中: 但我得到了这样的回答: 有人知道我做错了什么吗? 谢啦! 编辑: 我只是按照André Laszlo的建议尝试了< code>return list(context):它返回 但是如果我使用: 似乎很管用。我将阅读有关“list()”的文档。

  • 我的服务器中有一个zip文件,我想为用户创建一个下载按钮,下面是我的代码: 下面是我的JS代码: 当我单击“a”元素(downloadLink)时,我可以下载zip文件,但当我尝试打开它时,我会收到一个错误,上面写着: 错误:不是存档警告:标题错误 从服务器的zip文件是100%罚款,我可以打开它没有任何问题,问题是当我从我的网站下载它,所以我认为有一些我是理所当然的。任何帮助都很感激,谢谢。