[django]django 3種返回json方法


django 3種返回json方法

1.手動組裝字典返回

from django.http import JsonResponse, HttpResponse
from django.shortcuts import render
from app01.models import Book


# Create your views here.

def get_book(request):
    all_book = Book.objects.all()
    d = []
    for i in all_book:
        d.append({'name': i.name})
    return JsonResponse(d, safe=False)

2.JsonResponse返回

def get_book2(request):
    from django.forms.models import model_to_dict
    all_book = Book.objects.all()
    d = []
    for i in all_book:
        d.append(model_to_dict(i))           # <-------針對一個對象()
    return JsonResponse(d, safe=False) # 非字典要設置成false

一般自己的系統會從別的系統獲取數據, 這里應該也僅限於展示, 所以JsonResponse還是有很多實用場景

def booapi(request):
    from django.core.serializers import serialize
    book_list = [
        {'id': 1, 'name': 'ptyhon'},
        {'id': 2, 'name': 'go'},
    ]
    import json
    return HttpResponse(json.dumps(book_list), content_type='application/json')

3.django自帶的serializers返回

這個好像只能針對queryset操作,即本地db里的數據,不能操作從其他系統api獲取到的list ,dict等

def get_book3(request):
    from django.core.serializers import serialize
    d = serialize('json', Book.objects.all()) # <-------針對一個queryset,[{}, {}]

    # return HttpResponse(d)
    return HttpResponse(d)

return render(request, 'myapp/index.html', {'foo': 'bar',}, content_type='application/xhtml+xml')

return HttpResponse(t.render(c, request), content_type='application/xhtml+xml')

return HttpResponse(json.dumps(data), content_type='application/json', status=400)

JsonResponse = HttpResponse+content-type

model轉dict方法
https://mp.weixin.qq.com/s/7gPLaCESHAB0dLgq7qZq5Q

使用類的__dict__方法

https://stackoverflow.com/questions/21925671/convert-django-model-object-to-dict-with-all-of-the-fields-intact

http://www.liujiangblog.com/course/django/171


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM