我們自己封裝的一些東西,往往放在一個(gè)utils文件夾內(nèi),以后也方便管理和導(dǎo)入
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括薛城網(wǎng)站建設(shè)、薛城網(wǎng)站制作、薛城網(wǎng)頁(yè)制作以及薛城網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,薛城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到薛城省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
# 自己封裝的Response對(duì)象
from rest_framework.response import Response
class APIResponse(Response):
def __init__(self,code=1,msg='成功',result=None,status=None,headers=None,content_type=None,**kwargs):
dic = {
'code':code,
'msg':msg
}
if result:
dic['result']=result
dic.update(kwargs)
super().__init__(data=dic,status=status,headers=headers,content_type=content_type)
# 這里用來(lái)放全局異常
# 這個(gè)方法可以從rest_framework里的settings.py里找到它的配置,然后導(dǎo)入就行,重寫(xiě)該方法
from rest_framework.views import exception_handler
from . import response # 導(dǎo)入自己定義的響應(yīng)對(duì)象
from .logger import log #導(dǎo)入自己定義的日志對(duì)象
def common_exception_handler(exc, context):
# 記錄以下報(bào)錯(cuò)信息到日志中
# context['view']可以取到具體是哪個(gè)視圖出了錯(cuò)
log.error('view是:%s,錯(cuò)誤是:%s' %(context['view'].__class__.__name__,str(exc)))
# 先調(diào)用一下原來(lái)的exception_handler方法
ret = exception_handler(exc, context) # ret是一個(gè)Response對(duì)象,其內(nèi)部有一個(gè)data屬性,放的就是錯(cuò)誤信息
# 這個(gè)表示如果drf處理不了的異常(交給django處理的異常),我們進(jìn)行處理一下
if not ret:
# 這里面也可以放更多其他邏輯,具體對(duì)于會(huì)出現(xiàn)的異常進(jìn)行分類(lèi)處理
# 比如下面這樣
# if isinstance(exc,KeyError):
return response.APIResponse(code=0,msg='error',result=str(exc))
else:
# ret.data是一個(gè)字典,字典里是drf處理的異常信息
return response.APIResponse(code=0,msg='error',result=ret.data)
封裝完畢之后,還需要在settings里配置一下,告訴drf采用我們封裝的異常處理
# 放自己的全局異常
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'luffyapi.utils.exceptions.common_exception_handler',
}
當(dāng)前名稱(chēng):后臺(tái)response和異常處理封裝
文章網(wǎng)址:http://chinadenli.net/article20/dsogdjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站導(dǎo)航、網(wǎng)站改版、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)