1. 程式人生 > 其它 >Django REST Framwork 使用 HyperlinkedModelSerializer 報錯: `HyperlinkedIdentityField` requires the request in the serializer context

Django REST Framwork 使用 HyperlinkedModelSerializer 報錯: `HyperlinkedIdentityField` requires the request in the serializer context

背景

在專案中使用 Django 的 ORM 功能時,免不了涉及到序列化與反序列化的操作(例如:python物件轉為可用於網路傳輸的位元組序列;HTTP請求中的位元組序列資料轉為python物件)。在Django REST Framwork (以下簡稱DRF)的設計中,Serializers類以及其子類的使命之一就是幫助我們完成這種轉換。

問題描述

使用postman呼叫DRF的REST介面,讀取資料時報錯如下:

`HyperlinkedIdentityField` requires the request in the serializer context. Add `context={'
request': request}` when instantiating the serializer."

問題解決

經過反覆測試後發現,在具體的 Serializers 中, fields 需要指定具體的模型屬性:

錯誤的程式碼:

class SimulationConfigSerializer(serializers.HyperlinkedModelSerializer):    
    。。。
    class Meta:
        model = SimulationConfig       
        fields =  "__all__"

正確的程式碼:

class SimulationConfigSerializer(serializers.HyperlinkedModelSerializer):    
    。。。
    class Meta:
        model = SimulationConfig
       fields=['id','simulation_name','create_time']

解決問題的同時總結與記錄下來,方便自己與他人~感謝觀看:)