【问题标题】:Something wrong with django json serializerdjango json 序列化程序有问题
【发布时间】:2021-11-17 12:15:44
【问题描述】:

我尝试寻找答案,但到目前为止无济于事,基本上我尝试将 django 模型返回为 json 然而,似乎序列化程序将其转换为字符串

我的代码如下:

view.py

from django.shortcuts import render
from screener.models import maintable
from .models import Messages
from django.http import JsonResponse
from django.core import serializers
from datetime import datetime
import json

def infiniteScroll(request, room_name):
    dateFilter=request.GET.get('date')
    dateFilter=dateFilter[5:len(dateFilter)-4]
    dateFilter=datetime.strptime(dateFilter, '%d %b %Y %H:%M:%S')
    data=serializers.serialize('json', reversed(Messages.objects.filter(room=room_name).filter(date_added__lt=dateFilter).order_by('-date_added')[:2]))
    return JsonResponse(data, safe=False)

urls.py

from django.contrib import admin
from django.urls import path
from . import views

app_name='chat'
urlpatterns = [
    path('<str:room_name>/', views.room, name='room'),
    path('<str:room_name>/hist/', views.infiniteScroll, name='infiniteScroll'),
]

当我访问网站时http://127.0.0.1:8000/chat/AAPL/hist/?date=Thu,%2023%20Sep%202021%2014:03:42%20GMT

结果是一个带有字符串的页面:

"[{\"model\": \"chat.messages\", \"pk\": 118, \"fields\": {\"username\": \"adiputra12\", \"room\": \"AAPL\", \"content\": \"hello\", \"date_added\": \"2021-09-23T13:54:30.043Z\"}}]"

我怎样才能返回json,如下所示:

[{'model': 'chat.messages', 'pk': 118, 'fields': {'username': 'adiputra12', 'room': 'AAPL', 'content': 'hello', 'date_added': '2021-09-23T13:54:30.043Z'}]

【问题讨论】:

    标签: json django ajax


    【解决方案1】:

    在这行代码之后

    data=serializers.serialize('json',reversed(Messages.objects.filter(room=room_name).filter(date_added__lt=dateFilter).order_by('-date_added')[:2]))
    

    尝试添加

    data = json.loads(data)
    return JsonResponse(data, safe=False)
    

    【讨论】:

    • 谢谢 Println 我意识到我的错误我在 data = json.loads(data) 之前尝试过,但我输入了一个错字 data = json.load(data)... 它现在可以工作了,谢谢你跨度>
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2016-12-09
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多