1. 程式人生 > >使用DRF框架進行Web開發中詳情頁面的資訊展示

使用DRF框架進行Web開發中詳情頁面的資訊展示

當我們登入後需要或者檢視自己的詳細資訊或者檢視某商品的詳細資訊時,我們要去寫一個關於詳細內容的檢視,配置好路由,編寫序列化器來顯示資訊。具體步驟如下
1:編寫檢視(如需檢視個人中心頁面)
注意檢視的所繼承的類

from rest_framework.permissions import IsAuthenticated
from rest_framework import generics


class UserRetrieveView(generics.RetrieveAPIView):
    # queryset = User.objects.all()  # 不用指明查詢集 只用獲取到當前登入使用者的資訊即可
    serializer_class = UserDetailSerializer
    # 認證使用者顯示資訊  未認證跳轉到登入頁
    permission_classes = [IsAuthenticated]

    def get_object(self):
        return self.request.user

2:序列化器的編寫
比如要顯示使用者的使用者名稱,手機號和郵箱等資訊,此時繼承自模型類序列化器比較簡單,因為我們要顯示的欄位都是我們之前在模型類就定義好了的

class UserDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'mobile', 'id', 'email']

3:配置路由

url(r'^user/$', views.UserRetrieveVIew.as_view())

總結:特別值得注意的是


1) 和模糊的去查詢某些物件不同,詳情頁是在已知使用者和已知商品物件的時候去查詢它的詳細資訊,而非去查詢該物件。因此不用通過主鍵PK去查詢,單個使用者查詢不用在路由中指定匹配PK (?P<pk>/d+)。
2) 檢視提供給我們的關於資料庫查詢的屬性為queryset。此時不需要根據主鍵查詢物件,而是希望根據物件查詢物件資訊因此不用指明。
get_object(self)在檢視中可以呼叫該方法獲取詳情資訊的模型類物件。預設是根據主鍵查詢的,此時只需改寫此方法,使其放回使用者物件即可
3) 最後還要配置一下認證資訊,只有認證過的使用者才能檢視詳情頁,在當前檢視下指定認證型別