最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django?RestFramework?全局異常處理詳解

 更新時(shí)間:2022年02月28日 09:40:41   作者:桔子檸檬水  
這篇文章主要為大家詳細(xì)介紹了Django?RestFramework?全局異常處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

REST framework定義的異常

  • APIException 所有異常的父類
  • ParseError 解析錯(cuò)誤
  • AuthenticationFailed 認(rèn)證失敗
  • NotAuthenticated 尚未認(rèn)證
  • PermissionDenied 權(quán)限決絕
  • NotFound 未找到
  • MethodNotAllowed 請(qǐng)求方式不支持
  • NotAcceptable 要獲取的數(shù)據(jù)格式不支持
  • Throttled 超過限流次數(shù)
  • ValidationError 校驗(yàn)失敗

一、定義異常處理類

from django.http import JsonResponse
from rest_framework.views import exception_handler as drf_exception_handler
import logging
from django.db import DatabaseError
from redis.exceptions import RedisError
import traceback
# 獲取在配置文件中定義的logger,用來記錄日志
logger = logging.getLogger('django')

def exception_handler(exc, context):
    """
    自定義異常處理
    :param exc: 異常
    :param context: 拋出異常的上下文(包含request請(qǐng)求對(duì)象和view視圖對(duì)象)
    :return: Response響應(yīng)對(duì)象
    """
    # 調(diào)用drf框架原生的異常處理方法
    response = drf_exception_handler(exc, context)
    if response is not None:
    	logger.info('REST_FRAMEWORK處理異常')
    	# 使用自定義封裝好的方法處理數(shù)據(jù)格式并返回給前端
        return response_util.success(response)
    view = context['view']
    # 打印異常類以及異常的文本信息
    logger.error('[%s] %s' % (view, exc))
    returnData = {
        'code': 500,
        'msg': '服務(wù)器錯(cuò)誤',
        'data': ""
    }
    # 捕獲其他異常,直接返回 500
    if isinstance(exc, DatabaseError) or isinstance(exc, RedisError):
        # 數(shù)據(jù)庫(kù)異常,使用traceback.format_exc()可以像系統(tǒng)報(bào)錯(cuò)沒攔截那樣子打印詳細(xì)錯(cuò)誤信息又不會(huì)導(dǎo)致程序停止
        logger.error(f'其他未知錯(cuò)誤:{traceback.format_exc()}')
        # 使用django原生的響應(yīng)對(duì)象返回,不能用DRF框架的響應(yīng)對(duì)象
        return JsonResponse(data=returnData, status=500)
    else:
        # 打印錯(cuò)誤詳細(xì)信息
        logger.error(f'其他未知錯(cuò)誤:{traceback.format_exc()}')
        # 使用django原生的響應(yīng)對(duì)象返回,不能用DRF框架的響應(yīng)對(duì)象
        return JsonResponse(data=returnData, status=500)

二、注冊(cè)DRF框架中默認(rèn)的錯(cuò)誤處理為自己定義的類

在settings.py文件中定義

REST_FRAMEWORK = {
    # 異常處理
    'EXCEPTION_HANDLER': 'meiduo_service.utils.excepitons.exception_handler',
}

修改django默認(rèn)處理了錯(cuò)誤對(duì)象類似,將錯(cuò)誤處理對(duì)象改為用中間件即可,處理的邏輯思路一樣,不過類以及設(shè)置方法不一樣而已

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • PyQt5 顯示超清高分辨率圖片的方法

    PyQt5 顯示超清高分辨率圖片的方法

    這篇文章主要介紹了PyQt5 顯示超清高分辨率圖片的方法,幫助大家更好的理解和阿學(xué)習(xí)使用pyqt5,感興趣的朋友可以了解下
    2021-04-04
  • Python爬取城市租房信息實(shí)戰(zhàn)分享

    Python爬取城市租房信息實(shí)戰(zhàn)分享

    這篇文章主要介紹了Python爬取城市房租房信息實(shí)戰(zhàn)分享,先單線程爬蟲,測(cè)試可以成功爬取之后再優(yōu)化為多線程,最后存入數(shù)據(jù)庫(kù),需要的小伙伴可以參考一下的相關(guān)資料
    2022-04-04
  • python playwright之元素定位示例詳解

    python playwright之元素定位示例詳解

    這篇文章主要為大家介紹了python playwright之元素定位示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • pycharm自定義TODO類注釋以及高亮顏色的設(shè)置方法

    pycharm自定義TODO類注釋以及高亮顏色的設(shè)置方法

    這篇文章主要介紹了pycharm自定義TODO類注釋以及高亮顏色的設(shè)置方法,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03
  • ansible動(dòng)態(tài)Inventory主機(jī)清單配置遇到的坑

    ansible動(dòng)態(tài)Inventory主機(jī)清單配置遇到的坑

    這篇文章主要介紹了ansible動(dòng)態(tài)Inventory主機(jī)清單配置遇到的坑,需要的朋友可以參考下
    2020-01-01
  • python的鏈表基礎(chǔ)知識(shí)點(diǎn)

    python的鏈表基礎(chǔ)知識(shí)點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于python的鏈表基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考學(xué)習(xí)下。
    2020-09-09
  • Python基礎(chǔ)之循環(huán)語(yǔ)句相關(guān)知識(shí)總結(jié)

    Python基礎(chǔ)之循環(huán)語(yǔ)句相關(guān)知識(shí)總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Python基礎(chǔ)的相關(guān)知識(shí),文章圍繞著Python循環(huán)語(yǔ)句展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • PyTorch之圖像和Tensor填充的實(shí)例

    PyTorch之圖像和Tensor填充的實(shí)例

    今天小編就為大家分享一篇PyTorch之圖像和Tensor填充的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • pycharm安裝及如何導(dǎo)入numpy

    pycharm安裝及如何導(dǎo)入numpy

    這篇文章主要介紹了pycharm安裝及如何導(dǎo)入numpy,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python中使用NumPy進(jìn)行數(shù)據(jù)處理方式

    Python中使用NumPy進(jìn)行數(shù)據(jù)處理方式

    這篇文章主要介紹了Python中使用NumPy進(jìn)行數(shù)據(jù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評(píng)論

咸宁市| 万安县| 彩票| 买车| 临泽县| 三门县| 商河县| 淮滨县| 桃园县| 桐庐县| 平顺县| 张北县| 嘉兴市| 湘乡市| 新邵县| 芦溪县| 满城县| 砚山县| 开封市| 武冈市| 镇江市| 永宁县| 清徐县| 昌宁县| 峡江县| 泾源县| 吉水县| 巴马| 新竹县| 仁怀市| 弋阳县| 新和县| 曲水县| 德惠市| 麻城市| 阿克陶县| 宣恩县| 抚远县| 博罗县| 汽车| 衢州市|