摘要:昨晚做了一個奇怪的夢。解決方法是創建了一個額外的模型,里包含字段。原文地址一個關于的夢我的博客時空路由器
Django Rest Framework 這個框架的相關資料確實少,碰到問題比較難以解決,連睡覺都在思考解決的問題。
最近有一個關于 Django Rest Framework 的問題一直困擾我,在使用視圖集 ViewSet 的時候,有時候序列化模型的讀寫不一定完全一樣,這時候該如何輸出呢?
所謂日有所思,夜有所夢。昨晚做了一個奇怪的夢。
夢的大概是這樣的:
我發現了 Django Rest Framework 在 Response 的時候可以定義一個 Response Serializer Model,這樣就可以省去一些不必要顯示的字段。
我將信將疑,今天進它的官網查找了一下到底有沒有這個 API,發現確實.......果然.........沒有。
不過按這個思路還是給了我解決方法,可能這個解決方法有些糙。
比如用戶信息的注冊和獲取,包含以下字段:
username
password
注冊的時候需要 username 、 password,然而獲取的時候只需要 username 不需要 password,而 serializer 的 fields 又是定義了 username 、 password,這樣很矛盾。
解決方法是創建了一個額外的 serializer 模型,fields 里包含 username 字段。然后重寫 create 方法,在 Response 之前將原先的序列化模型轉換成自定義的序列化模型,然后 Response。
具體解決方法定義兩個 User 序列化模型,一個用于注冊,一個用于顯示
class RegisterSerializer(serializers.ModelSerializer): class Meta: model = User fields = ("id", "username", "password") class DisplaySerializer(serializers.ModelSerializer): class Meta: model = User fields = ("id", "username")
重寫 create 方法,注冊后返回用戶的基本信息,而不包含密碼
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) display_serializer = DisplaySerializer(data=serializer.data) display_serializer.is_valid(raise_exception=False) return Response(droider_serializer.data, status=status.HTTP_201_CREATED, headers=headers)
display_serializer 的 is_valid() 方法里 raise_exception 必須為 False, 因為 self.perform_create() 方法已經創建了用戶,所以再次驗證的時候會拋出 用戶已存在 的異常,所以用 False 忽略這個異常。
返回結果POST data
{ "username": "username", "password": "password" }
response data
{ "username": "username" }
其他方法也同理。
原文地址:一個關于 Django Rest Framework 的夢
我的博客:時空路由器
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38684.html
摘要:昨晚做了一個奇怪的夢。解決方法是創建了一個額外的模型,里包含字段。原文地址一個關于的夢我的博客時空路由器 Django Rest Framework 這個框架的相關資料確實少,碰到問題比較難以解決,連睡覺都在思考解決的問題。 最近有一個關于 Django Rest Framework 的問題一直困擾我,在使用視圖集 ViewSet 的時候,有時候序列化模型的讀寫不一定完全一樣,這時候該...
摘要:昨晚做了一個奇怪的夢。解決方法是創建了一個額外的模型,里包含字段。原文地址一個關于的夢我的博客時空路由器 Django Rest Framework 這個框架的相關資料確實少,碰到問題比較難以解決,連睡覺都在思考解決的問題。 最近有一個關于 Django Rest Framework 的問題一直困擾我,在使用視圖集 ViewSet 的時候,有時候序列化模型的讀寫不一定完全一樣,這時候該...
摘要:前言對于前后端分離大家可能在網上可以找到很多的文章。但是,我們今天分享的文章的英文我們的老師對于前后端的分離問題的多年工作經驗的總結。今天,我們把這些經驗總結知識點分享給大家,希望可以幫助到大家。添加開啟黑白名單,任選其一。 前言 對于前后端分離大家可能在網上可以找到很多的文章。但是,我們今天分享的文章的英文我們的老師對于前后端的分離問題的多年工作經驗的總結。今天,我們把這些經驗總結知...
摘要:本文主要是用來記錄自己學習的過程。其中可能會有很多自己的錯誤理解。這里主要會用到的知識有百度百科阮一峰理解架構其余請自行百度。所有的全局設置都放在的字典中。使用標準的權限,未認證的用戶只讀權限不要忘記將添加到你的中。 本文主要是用來記錄自己學習django-rest-framework的過程。其中可能會有很多自己的錯誤理解。 這里主要會用到的知識有 1. [django](https:...
摘要:本文主要是用來記錄自己學習的過程。其中可能會有很多自己的錯誤理解。這里主要會用到的知識有百度百科阮一峰理解架構其余請自行百度。所有的全局設置都放在的字典中。使用標準的權限,未認證的用戶只讀權限不要忘記將添加到你的中。 本文主要是用來記錄自己學習django-rest-framework的過程。其中可能會有很多自己的錯誤理解。 這里主要會用到的知識有 1. [django](https:...
閱讀 1442·2023-04-25 17:18
閱讀 1882·2021-10-27 14:18
閱讀 2124·2021-09-09 09:33
閱讀 1840·2019-08-30 15:55
閱讀 2016·2019-08-30 15:53
閱讀 3440·2019-08-29 16:17
閱讀 3429·2019-08-26 13:57
閱讀 1730·2019-08-26 13:46