色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

Python3讀取寫(xiě)入json的中文亂碼問(wèn)題

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

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

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

這種方式返回簡(jiǎn)單,但是中文會(huì)亂碼

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

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')

補(bǔ)充知識(shí):Django中的HttpResponse和JsonResponse

我們?cè)诰帉?xiě)一些接口函數(shù)的時(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))

這里前臺(tái)的返回信息中,返回的Content-Type:是text/html,也就是字符串類型的返回,所以這段返回值并不是一個(gè)標(biāo)準(zhǔn)的json數(shù)據(jù),是一個(gè)長(zhǎng)得像json數(shù)據(jù)的字符串,當(dāng)然可以通過(guò)工具直接轉(zhuǎn)換為json,不過(guò)既然是一個(gè)json的接口,那么我們拋出的數(shù)據(jù)自然是json格式的最好,那如何拋出標(biāo)準(zhǔn)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)置幫我們封裝了這個(gè)轉(zhuǎn)換的操作,也就是說(shuō)我們的接口拋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)

成功收到j(luò)son數(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)

此時(shí)查看輸出,卻報(bào)錯(cuò)了:

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

所以我們?nèi)绻枰獙⒎莇ict類型的數(shù)據(jù)進(jìn)行JsonResponse傳值,需要將safe參數(shù)設(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í)成功接收到數(shù)據(jù)。

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

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

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

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美另类亚洲一区二区 | 色播亚洲| 欧美精品成人一区二区视频一 | 久草视频手机在线观看 | 福利社在线视频 | 国产自产v一区二区三区c | 欧美一级网址 | 男人天堂网在线 | 亚洲欧美国产一区二区三区 | 国产亚洲欧美另类久久久 | 国产亚洲欧洲精品 | 国产人成 | 麻豆md国产在线观看 | 国产精品视频网址 | 国产黄页| 成人怡红院 | 国产精品久久自在自线观看 | 欧美毛片a级毛片免费观 | 国产一区二区三区精品久久呦 | 色青五月天| 模特视频一二三区 | 午夜爽爽性刺激一区二区视频 | 久久久精品久久 | a级毛片免费全部播放 | 国产波多野结衣中文在线播放 | 日本草草视频在线观看 | 在线视频一区二区三区在线播放 | 亚洲精品综合一区二区三区 | 久久国产一片免费观看 | 午夜性激福利免费观看 | 国产亚洲人成网站在线观看不卡 | 亚洲aⅴ男人的天堂在线观看 | 亚洲小视频在线播放 | 午夜a毛片 | 国产欧美日韩高清专区手机版 | 三级大片网站 | 成人在线视频一区 | 欧美精品a毛片免费观看 | 成人性生免费视频 | 成人男女网18免费看 | 91国在线观看 |