第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如果找不到 Django REST Framework 的詳細(xì)信息

如果找不到 Django REST Framework 的詳細(xì)信息

慕妹3242003 2022-07-26 10:30:49
我試圖實(shí)現(xiàn)這個(gè)答案Response來為我的所有類創(chuàng)建一個(gè)自定義基ModelViewSet類。我的問題在于retrieve功能。如果Id我正在尋找的實(shí)例沒有找到,我似乎無法Response用我修改的response_format. 它仍然給出默認(rèn)響應(yīng)。我應(yīng)該把我的if病情改成什么?views.py:class ResponseInfo(object):    def __init__(self, **args):        self.response = {            "message": args.get('message', 'success'),            "error": args.get('error', ),            "data": args.get('data', []),        }class LanguageView(viewsets.ModelViewSet):    def __init__(self, **kwargs):        self.response_format = ResponseInfo().response        super(LanguageView, self).__init__(**kwargs)    permission_classes = [permissions.DjangoModelPermissions]    queryset = Language.objects.all()    serializer_class = LanguageSerializer    def list(self, request, *args, **kwargs):        # call the original 'list' to get the original response.        response_data = super(LanguageView, self).list(request, *args, **kwargs)        # customize the response data.        self.response_format['data'] = response_data.data        if not response_data.data:            self.response_format['message'] = 'List is empty.'            self.response_format['error'] = response_data.status_code        return Response(self.response_format)    def retrieve(self, request, *args, **kwargs):        response_data = super(LanguageView, self).retrieve(request, *args, **kwargs)        self.response_format['data'] = response_data.data        if not response_data.data:            self.response_format['message'] = 'Instance not found.'            self.response_format['error'] = response_data.status_code        return Response(self.response_format)找到實(shí)例時(shí)的 JSON 響應(yīng)。例如http://127.0.0.1:8000/languages/1/:{    "message": "success",    "error": null,    "data": {        "id": 1,        "name": "English",        "icon": "http://127.0.0.1:8000/media/language_icons/English.png",        "xml": "http://127.0.0.1:8000/media/-",        "abbreviation": "En"    }}"error"沒有錯(cuò)誤時(shí)是否可以不顯示變量?對于這種情況,當(dāng)列表不為空并且找到搜索的實(shí)例時(shí)。
查看完整描述

1 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以實(shí)現(xiàn)自定義異常處理程序:


from rest_framework.views import exception_handler


def custom_exception_handler(exc, context):

    # Call REST framework's default exception handler first,

    # to get the standard error response.

    response = exception_handler(exc, context)


    # Now add the HTTP status code to the response.

    if response is not None and response.status_code == 404:

        response.data = {  

            "message": "Instance not found.",  

            "error": "HTTP_404_NOT_FOUND",  

        }


    return response

要為您的項(xiàng)目應(yīng)用此處理程序,請將其添加到REST_FRAMEWORK設(shè)置中:


REST_FRAMEWORK = {

    'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'

}


查看完整回答
反對 回復(fù) 2022-07-26
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號