Django REST Framwork 使用 HyperlinkedModelSerializer 報錯: `HyperlinkedIdentityField` requires the request in the serializer context
阿新 • • 發佈:2021-08-06
背景
在專案中使用 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']
解決問題的同時總結與記錄下來,方便自己與他人~感謝觀看:)