亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Django 框架中通用類視圖的用法

        2016-06-29 20:23:16楊剛
        電腦知識與技術(shù) 2016年13期
        關(guān)鍵詞:定義方法

        楊剛

        摘要:Django是一個開源的Web開發(fā)框架,它為Web開發(fā)中的常見問題提供了完整的解決方案。Django定義了一些基于類的通用視圖,用于解決一些常見的Web任務。該文主要介紹了類視圖的基本用法以及幾個常用的類視圖。

        關(guān)鍵詞:Django;類;Web

        中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)13-0103-02

        1類視圖的基本使用

        Django中的視圖是一個可調(diào)用對象,在Django的早期版本中,視圖用函數(shù)來實現(xiàn)。隨著Django的不斷發(fā)展,Django的技術(shù)團隊提供了新的實現(xiàn),用類來表示視圖,并且針對Web開發(fā)中的常見任務,定義了大量的通用類視圖。使用基于類的視圖,可以更好的構(gòu)建視圖的內(nèi)在邏輯,并且利于繼承和混合重用。使用基于類的視圖主要用2種方式:

        1)在URLconf 中的簡單用法

        如果只是修改類的一些簡單的屬性,在URLconf 中直接使用基于類的視圖,是最簡單職業(yè)的方法??梢詫⒁薷牡膶傩灾苯觽鬟f給類視圖的as_view() 方法:

        from django.conf.urls import url

        from django.views.generic import TemplateView

        urlpatterns=[url(

        r'^home/',TemplateView.as_view(template_name="about.html))]

        在這個例子中,我們設置TemplateView的template_name屬性??梢允褂妙愃频姆椒ǜ采wRedirectView 的query_string屬性。

        2)子類化通用視圖

        使用類視圖的第二種方法是繼承一個已經(jīng)存在的類視圖,然后在子類中覆蓋其屬性或方法、例如,考慮只顯示一個模板home.html 的視圖。Django 有一個通用視圖TemplateView來做這件事,所以我們可以簡單地子類化它,并覆蓋模板的名稱:

        fromdjango.views.genericimportTemplateView

        classHomeView(TemplateView):

        template_name="home.html"

        然后我們只需要添加這個新的視圖到我們的URLconf 中。TemplateView是一個類不是一個函數(shù),所以我們將URL 指向類的as_view()方法,它讓基于類的視圖提供一個類似函數(shù)的入口:

        fromdjango.conf.urlsimporturl

        fromsome_app.viewsimportAboutView

        urlpatterns=[url(r'^about/',AboutView.as_view())]

        2幾種常用的類視圖

        針對Web開發(fā)中的常見任務,Django定義了一組基礎視圖、一組通用顯示視圖以及一組通用編輯視圖等類視圖。下面依次介紹幾個常用的類視圖。

        1)TemplateView

        TemplateView是基礎視圖。該視圖主要用于渲染一個給定的模板。它的template_name屬性用于指定模板,get_context_data方法用于獲得顯示在模板中的數(shù)據(jù)。

        classHomePageView(TemplateView):

        template_name="home.html"

        defget_context_data(self,**kwargs):

        context=super(HomePageView,self).get_context_data(**kwargs)

        context['latest_articles']=Article.objects.all()[:5]

        returncontext

        2)ListView

        ListView是一個通用顯示視圖,主要用于顯示一個對象列表??梢酝ㄟ^重寫它的get_queryset方法,來獲取要顯示的列表。

        class ObjectList(ListView):

        def get_queryset(self):

        modelobj = get_model(self.kwargs['app'], self.kwargs['model'])

        # 獲得url后的參數(shù)

        kwargs = self.request.GET.dict()

        return modelobj.objects.filter(**kwargs)

        在get_queryset方法中,使用get_model方法可以動態(tài)的根據(jù)app和model來獲取模型,列表的查詢參數(shù)可以寫在url的后面。

        3)DeleteView

        DeleteView是一個通用編輯視圖,主要用于刪除一個指定的對象。可以通過重寫它的get_object方法,來指定要刪除的對象。

        class ObjectDelete(DeleteView):

        def get_object(self):

        modelobj = get_model(self.kwargs['app'], self.kwargs['model'])

        obj = modelobj.objects.get(pk=self.kwargs['pk'])

        return obj

        4)CreateView

        CreateView也是一個通用編輯視圖,主要用于創(chuàng)建一個對象。可以通過重寫它的get_initial進行初始化,可以通過重寫get_template_names方法來指定模板。

        class ObjectCreate(CreateView):

        def get_initial(self):

        return self.request.GET.dict()

        def get_template_names(self):

        '''如果模型中制定了模板,則使用該模板,否則使用默認的模板'''

        modelobj = get_model(self.kwargs['app'], self.kwargs['model'])

        if hasattr(modelobj.Display, 'create_template'):

        return modelobj.Display.create_template

        else:

        return ['xadmin/object.html']

        通過使用Django中的通用類視圖,可以大幅提高工作效率。

        參考文獻:

        [1] 楊志慶.基于Django的Blog系統(tǒng)的開發(fā)與實現(xiàn)[J].機電一體化,2013(9).

        猜你喜歡
        定義方法
        永遠不要用“起點”定義自己
        海峽姐妹(2020年9期)2021-01-04 01:35:44
        定義“風格”
        學習方法
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        捕魚
        修辭學的重大定義
        當代修辭學(2014年3期)2014-01-21 02:30:44
        亚洲国产成人手机在线观看| 欧美成人精品a∨在线观看| 成年无码av片在线| 欧美成人小视频| 丁香五香天堂网| 国产九色AV刺激露脸对白| 少妇高潮太爽了免费网站| 大陆少妇一区二区三区| 蜜臀av在线观看| 日韩精品无码视频一区二区蜜桃| 国产乱人伦偷精品视频免| 精品午夜中文字幕熟女| 久久777国产线看观看精品| 熟女体下毛毛黑森林| 99久久久精品免费香蕉| 亚洲天堂一区二区精品| 中文字幕亚洲乱码成熟女1区| 人妻夜夜爽天天爽一区| 色爱无码A V 综合区| av有码在线一区二区三区| 亚洲精品一区久久久久一品av| av 日韩 人妻 黑人 综合 无码| 久久久窝窝午夜精品| 日韩精品一二区在线视频| 久久精品日本不卡91| 亚洲中文字幕在线观看| 久久99精品久久久久久齐齐百度| 亚洲女同人妻在线播放| 国产精品久久国产精品99 gif| 亚洲色欲色欲www在线播放| 日本不卡在线一区二区三区视频| av天堂网手机在线观看| av色欲无码人妻中文字幕| 国模私拍福利一区二区| 五月停停开心中文字幕 | 一区二区三区内射美女毛片| 国产精品麻豆欧美日韩ww| 亚洲熟妇中文字幕日产无码| 国产亚洲熟妇在线视频| 风韵少妇性饥渴推油按摩视频| 国产又色又爽无遮挡免费|