Django作為一款開源的Python web框架,不僅提供了強大的對數據庫的支持,還支持將數據以Json格式輸出到前端頁面。但是在使用Django輸出Json時,我們可能會遇到Json只顯示在一行的情況,下面讓我們來看看怎樣解決這個問題。
在Django中輸出Json通常會使用JsonResponse方法,它的使用方式也很簡單:
from django.http import JsonResponse
import json
def my_view(request):
data = {
'name': 'Tom',
'age': 12,
'gender': 'male'
}
return JsonResponse(data)
但是在瀏覽器中查看返回的Json數據時,可能會發現它只顯示在一行中,這樣不僅不方便查看,而且也不容易理解。不用擔心,我們可以通過django自帶的JsonEncoder來處理。
from django.http import JsonResponse
from django.core.serializers.json import DjangoJSONEncoder
def my_view(request):
data = {
'name': 'Tom',
'age': 12,
'gender': 'male'
}
return JsonResponse(data, encoder=DjangoJSONEncoder, safe=False)
編寫JsonEncoder子類可以自定義JsonEncoder的行為,而DjangoJSONEncoder已經提供了默認實現。
safeparameter為False,表示修補原始輸入以通過一些安全啟用,如果輸入不是dict,list, tuple, str, int, float, bool和None之一。此選項默認為True。所以需要我們手動改為False來支持普通非字典、非列表數據的解析。
現在再來查看Json數據,發現顯示變得更加美觀易讀了。
{
"name": "Tom",
"age": 12,
"gender": "male"
}
通過JsonEncoder,我們可以將Django返回的Json數據進行格式化,使其更加易于查看和理解,同時也是一種良好的編碼習慣。