【问题标题】:How to send multiple objects through HttpResponse or JsonResponse in django如何在 Django 中通过 HttpResponse 或 JsonResponse 发送多个对象
【发布时间】:2019-06-17 10:06:06
【问题描述】:

我的views函数中有两个对象influencer_data和user_list。我想通过HttpResponse方法发送influencer_data和user_list,并获取Json格式的数据。

我的意见功能是:

def index(request):
    influencers = Influencer.objects.all()

    influencer_data = serializers.serialize("json",influencers) 
    user_list = UserList.objects.all()
    user_list = serializers.serialize("json",user_list)
    context = {
        'influencer_data':influencer_data,
        'user_list':user_list,

    }


    return HttpResponse(influencer_data,user_list, content_type='application/json')

当我同时传递影响者数据和用户列表时,我得到了错误

__init__() got multiple values for argument 'content_type'

当我将 return HttpResponse 语句更改为

return HttpResponse(context, content_type='application/json')

我明白了

influencer_datauser_list

即只是字典中的键值
当我将 return 语句更改为

return HttpResponse(json.dumps(context), content_type='application/json')

我得到的输出为:

    "influencer_data": "[{\"model\": \"influencer_listings.influencer\", \"pk\": 8794, \"fields\": {\"full_name\": \"F A I Z S H A I K H \\ud83c\\udf08\", \"username\": \"mr_faizzz_07\", \"photo\": \"\", \"email_id\": \"\", \"external_url\": \"\", \"location_city\": \"Mumbai\", \"categories\": \"\", \"hashtags\": \"['#foryou', '#blessyou', '#all', '#faizanshaikh', '#keepsmiling', '#blessed', '#look', 

(Json 对象变成字符串)
当我只传递一个对象时,即影响者数据或用户列表。我得到一个 Json 对象,即它工作正常(我想要给定格式的数据)

[
    {
        "model": "influencer_listings.influencer",
        "pk": 8794,
        "fields": {
            "full_name": "F A I Z S H A I K H ????",
            "username": "mr_faizzz_07",
            "photo": "",
            "email_id": "",
            "external_url": "",
            "location_city": "Mumbai",
            "categories": "",
            "hashtags": "['#foryou', '#blessyou', '#all', '#faizanshaikh', '#keepsmiling', '#blessed', '#look', '#ramzan', '#loveyou', '#lover', '#cuteboys', '#keepgoing', '#picoftheday', '#feathers', '#brothers', '#faizshaikhhhh', '#pictures', '#jummahmubarak', '#lovers']",

我该如何处理?

【问题讨论】:

  • 你说的 " 只是字典中的键值" 是什么意思?你能显示结果吗?您希望以哪种格式获取数据?
  • 您不能随意表示两种不同类型的数据(Influencer 数据和UserList 数据),除非您 施展魔法
  • 我可以使用 REST api 来做这种事情吗?
  • 您能做的最好的事情是以下设置,return HttpResponse(context, content_type='application/json')
  • 实际上我正在制作一个前端部分在反应的网络应用程序,所以我需要以 Json 格式传递数据。此外,对于每个影响者数据,我需要传递它可以在其中的 user_list添加到。

标签: django django-views httpresponse jsonresponse


【解决方案1】:
def index(request):
    influencers = Influencer.objects.all().values()
    user_list = UserList.objects.all().values()
    context = {
        'influencer_data': influencer_data,
        'user_list': user_list,
    }
    data = json.dumps(context, indent=4, sort_keys=True, default=str)
    return HttpResponse(data, content_type='application/json')

【讨论】:

  • 当我使用 json.dumps 时,它会将 json 对象变成一个字符串。类似 "influencer_data": "[{\"model\": \"influencer_listings.influencer\", \"pk\": 8794, \"fields\": {\"full_name\": \"F A I Z S H A I K H \\ud83c\\udf08\", \"username\": \"mr_faizzz_07\", \"photo\": \"\", \"email_id\": \"\", \"external_url\": \"\", \"location_city\": \"Mumbai\", \"categories\": \"\",
  • 您在浏览器中的最终响应是什么。如果你想要对象然后删除 default=str
  • 嗨 Javed,您尝试过使用 mark_safe 吗?从 django.utils.safestring 导入 mark_safe 然后 mark_safe(json.dumps(...))。这帮助我修复了字符串转换
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多