av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

django實現(xiàn)HttpResponse返回json數(shù)據(jù)為中文

瀏覽:100日期:2024-05-28 15:51:59

Python3讀取寫入json的中文亂碼問題

之前我用django一般用JsonResponse來返回json數(shù)據(jù)格式

但是發(fā)現(xiàn)返回中文的時候會亂碼

from django.http import JsonResponsedef test(request): result = {'result': 0, 'msg': '執(zhí)行成功'} return return JsonResponse(result)

這種方式返回簡單,但是中文會亂碼

現(xiàn)在改成用HttpResponse來返回,顯示中文成功

from django.http import HttpResponseimport jsondef test(request): result = {'result': 0, 'msg': '執(zhí)行成功'} #json返回為中文 return HttpResponse(json.dumps(result,ensure_ascii=False),content_type='application/json,charset=utf-8')

補充知識:Django中的HttpResponse和JsonResponse

我們在編寫一些接口函數(shù)的時候,經(jīng)常需要給調(diào)用者返回json格式的數(shù)據(jù),那么如何返回可直接解析的數(shù)據(jù)呢?

首先第一種方式:

from django.shortcuts import renderfrom django.http import HttpResponse,JsonResponseimport json# Create your views here.def index(request): data={ ’name’:’zhangsan’, ’age’:18, } return HttpResponse(json.dumps(data))

這里前臺的返回信息中,返回的Content-Type:是text/html,也就是字符串類型的返回,所以這段返回值并不是一個標準的json數(shù)據(jù),是一個長得像json數(shù)據(jù)的字符串,當然可以通過工具直接轉(zhuǎn)換為json,不過既然是一個json的接口,那么我們拋出的數(shù)據(jù)自然是json格式的最好,那如何拋出標準json格式的數(shù)據(jù)呢?

稍稍修改一丟丟代碼,在HttpResponse中添加content_type類型為json的屬性

from django.shortcuts import renderfrom django.http import HttpResponse,JsonResponseimport json# Create your views here.def index(request): data={ ’name’:’zhangsan’, ’age’:18, } return HttpResponse(json.dumps(data),content_type='application/json')

現(xiàn)在返回的就是application/json了;

那么Django提供了更方便的方法那就是JsonResponse,它內(nèi)置幫我們封裝了這個轉(zhuǎn)換的操作,也就是說我們的接口拋json數(shù)據(jù)的話那么將HttpResponse替換為JsonResponse就OK了

1.首先先傳dict數(shù)據(jù):

from django.shortcuts import renderfrom django.http import HttpResponse,JsonResponse# Create your views here.def index(request): data={ ’name’:’zhangsan’, ’age’:18, } return JsonResponse(data)

成功收到json數(shù)據(jù);

2.接著再試試list數(shù)據(jù):

from django.shortcuts import renderfrom django.http import HttpResponse,JsonResponse# Create your views here.def index(request): listdata=[1,2,3,4,5] return JsonResponse(listdata)

此時查看輸出,卻報錯了:

In order to allow non-dict objects to be serialized set the safe parameter to False.

所以我們?nèi)绻枰獙⒎莇ict類型的數(shù)據(jù)進行JsonResponse傳值,需要將safe參數(shù)設置為False

from django.shortcuts import renderfrom django.http import HttpResponse,JsonResponse# Create your views here.def index(request): listdata=[1,2,3,4,5] return JsonResponse(listdata,safe=False)

此時成功接收到數(shù)據(jù)。

3.如果我們需要使用JsonResponse傳中文

def func(request): data={’姓名’:’釋明空’} return JsonResponse(data,json_dumps_params={’ensure_ascii’:False})

此時需要添加’json_dumps_params={‘ensure_ascii’:False}’,因為json序列化中文用的是ascii編碼,所以傳到前臺的中文是ascii字符碼,需要這一步轉(zhuǎn)化為中文。

以上這篇django實現(xiàn)HttpResponse返回json數(shù)據(jù)為中文就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 97中文字幕| 成人亚洲精品 | 希岛爱理在线 | 99国产视频| 欧美一级做性受免费大片免费 | 自拍视频一区 | 闷骚老干部cao个爽 欧美区一区二 | 三级网站在线 | 第一福利视频 | 亚洲另类色图 | 国产在线小视频 | 久久精品一区二区国产 | 99国产免费 | 午夜黄色大片 | 国产一区欧美 | 国产逼逼| 欧美成人精品一区二区三区在线看 | 天天爱夜夜操 | 九九国产视频 | 日韩三级视频 | 中文av网站 | 黄色网址av | 性猛交xxxx富婆老太婆 | 中文字幕国产 | 国产又粗又大又爽 | 国产激情一区二区三区 | 日本黄色免费看 | 日韩伊人 | 成 人 黄 色 片 在线播放 | 国产精品自拍一区 | 韩国免费理论片 | 毛片在线观看网站 | 日本伊人久久 | 88av视频 | 欧美一级精品 | 精品欧美在线 | 夜夜躁狠狠躁日日躁av | 欧美在线观看一区 | 毛片网站在线观看 | 日本高潮视频 | 国产精品福利一区 |