Viewsets屠凶、Generic、Mimix解析

Viewsets

ViewSets本質(zhì)上只是一種基于類的視圖肆资,它不提供任何方法處理程序矗愧,比如“get()”、“post()”等等郑原。相反唉韭,它有一些動作,比如“l(fā)ist()”犯犁、“retrieve()”(檢索)属愤、“create()”等等。

動作只在實例化視圖的時候綁定到方法酸役。

user_list = UserViewSet.as_view({'get': 'list'})

user_detail = UserViewSet.as_view({'get': 'retrieve'})

通常住诸,您不會直接從viewset中實例化視圖驾胆,而是使用路由器注冊viewset,并自動確定URL 配置只壳。

router = DefaultRouter()

router.register(r'users', UserViewSet, 'user')

urlpatterns = router.urls
(1)ViewSetMixin(object)

重寫'.asview()'這樣它就需要一個執(zhí)行'action'的關鍵字將HTTP方法綁定到資源上的操作俏拱。

例如,要創(chuàng)建一個綁定“GET”和“POST”方法的具體視圖到“列表”和“創(chuàng)建”行動……

view = MyViewSet.as_view({'get': 'list', 'post': 'create'})
(2)ViewSet(ViewSetMixin, views.APIView)

基本ViewSet類在默認情況下不提供任何操作吼句。

(3)GenericViewSet(ViewSetMixin, generics.GenericAPIView)

GenericViewSet類在默認情況下不提供任何操作锅必,但是確實包含了通用視圖行為的基本集合,例如(“getobject”和“getqueryset”方法惕艳。)

(4)ReadOnlyModelViewSet(mixins.RetrieveModelMixin,mixins.ListModelMixin,GenericViewSet)

一個提供默認“列表()”和“檢索()”操作的viewset搞隐。

(5)ModelViewSet(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin,mixins.DestroyModelMixin, mixins.ListModelMixin,GenericViewSet)

一個提供默認“create()”、“檢索()”远搪、“更新()”劣纲,“部分更新()”、“銷毀()”和“列表()”操作的viewset谁鳍。

Generic

提供通常需要的行為的通用視圖癞季。

(1)GenericAPIView(views.APIView)

你需要設置或者覆蓋'getqueryset()'/'getserializerclass()'這些屬性。

如果你重寫了一個視圖方法倘潜,那么你調(diào)用'getqueryset()是很重要的绷柒,而不是直接訪問'queryset'屬性,因為“queryset”只會被評估一次涮因,并且這些結果被緩存了废睦,對于所有后續(xù)的請求。

如果您想要使用除pk以外的對象查找养泡,請設置“l(fā)ookupfield”嗜湃。對于更復雜的查找需求,覆蓋“getobject()”

(2)CreateAPIView(mixins.CreateModelMixin,GenericAPIView)

創(chuàng)建模型實例的具體視圖澜掩。

(3)ListAPIView(mixins.ListModelMixin, GenericAPIView)

列出一個queryset的具體視圖购披。

(4)RetrieveAPIView(mixins.RetrieveModelMixin, GenericAPIView)

用于檢索模型實例的具體視圖。

(5)DestroyAPIView(mixins.DestroyModelMixin, GenericAPIView)

刪除模型實例的具體視圖

(6)UpdateAPIView(mixins.UpdateModelMixin, GenericAPIView)

用于更新模型實例的具體視圖肩榕。

(7)ListCreateAPIView(mixins.ListModelMixin,mixins.CreateModelMixin,GenericAPIView)

列出一個queryset或創(chuàng)建一個模型實例的具體視圖今瀑。

(8)RetrieveUpdateAPIView(mixins.RetrieveModelMixin,mixins.UpdateModelMixin, GenericAPIView)

用于檢索、更新模型實例的具體視圖点把。

(9)RetrieveDestroyAPIView(mixins.RetrieveModelMixin,mixins.DestroyModelMixin橘荠, GenericAPIView)

用于檢索或刪除模型實例的具體視圖。

(10)RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView)

用于檢索郎逃、更新或刪除模型實例的具體視圖哥童。

Mixin.py

用于通用型類視圖的基本構建塊。

我們還沒有將行為綁定到http方法處理程序褒翰,這使得mixin類以有趣的方式組合起來贮懈。

(1) CreateModelMixin(object)

創(chuàng)建一個模型實例

(2) ListModelMixin(object)

查詢集的列表

(3) RetrieveModelMixin(object)

檢索模型實例匀泊。

<pre style="margin-left:18.0pt;

(4) UpdateModelMixin(object)

更新模型實例。

(5) DestroyModelMixin(object)

刪除模型實例朵你。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末各聘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抡医,更是在濱河造成了極大的恐慌躲因,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忌傻,死亡現(xiàn)場離奇詭異大脉,居然都是意外死亡,警方通過查閱死者的電腦和手機水孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門镰矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俘种,你說我怎么就攤上這事秤标。” “怎么了宙刘?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵苍姜,是天一觀的道長。 經(jīng)常有香客問我荐类,道長怖现,這世上最難降的妖魔是什么茁帽? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任玉罐,我火速辦了婚禮,結果婚禮上潘拨,老公的妹妹穿的比我還像新娘吊输。我一直安慰自己,他們只是感情好铁追,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布季蚂。 她就那樣靜靜地躺著,像睡著了一般琅束。 火紅的嫁衣襯著肌膚如雪扭屁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天涩禀,我揣著相機與錄音料滥,去河邊找鬼。 笑死艾船,一個胖子當著我的面吹牛葵腹,可吹牛的內(nèi)容都是我干的高每。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼践宴,長吁一口氣:“原來是場噩夢啊……” “哼鲸匿!你這毒婦竟也來了?” 一聲冷哼從身側響起阻肩,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤带欢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磺浙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洪囤,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年撕氧,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘤缩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡伦泥,死狀恐怖剥啤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情不脯,我是刑警寧澤府怯,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站防楷,受9級特大地震影響牺丙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜复局,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一冲簿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亿昏,春花似錦峦剔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至递礼,卻和暖如春惨险,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脊髓。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工辫愉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人供炼。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓一屋,卻偏偏與公主長得像窘疮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冀墨,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 基于類的視圖的一個主要優(yōu)點是它們允許你組合可重復使用的行為闸衫。 REST框架通過提供大量預構建視圖來提供常用模式,從...
    YYL07閱讀 653評論 0 0
  • API Reference GenericAPIView This class extends REST fram...
    陽光小鎮(zhèn)少爺閱讀 2,594評論 0 1
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽光小鎮(zhèn)少爺閱讀 3,827評論 0 8
  • 最近在看《戰(zhàn)爭與和平》時看到一句話:“人類只有兩種惡行,懶惰和迷信虫腋;人類也只有兩種美德骄酗,勤勞和智慧”我就是背負...
    笑阿笑閱讀 446評論 0 0
  • 橫看成嶺側成峰,遠近高低各不同悦冀。 不識廬山真面目趋翻,只緣身在此山中。 嶺與峰是在同一高度下的不同視角所見盒蟆,當俯瞰整座...
    方圓fg閱讀 817評論 4 6