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

        ?

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

        2016-06-29 20:23:16楊剛
        電腦知識與技術(shù) 2016年13期
        關(guān)鍵詞:列表視圖用法

        楊剛

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

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

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

        1類視圖的基本使用

        Django中的視圖是一個可調(diào)用對象,在Django的早期版本中,視圖用函數(shù)來實現(xiàn)。隨著Django的不斷發(fā)展,Django的技術(shù)團隊提供了新的實現(xiàn),用類來表示視圖,并且針對Web開發(fā)中的常見任務(wù),定義了大量的通用類視圖。使用基于類的視圖,可以更好的構(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))]

        在這個例子中,我們設(shè)置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ā)中的常見任務(wù),Django定義了一組基礎(chǔ)視圖、一組通用顯示視圖以及一組通用編輯視圖等類視圖。下面依次介紹幾個常用的類視圖。

        1)TemplateView

        TemplateView是基礎(chǔ)視圖。該視圖主要用于渲染一個給定的模板。它的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):

        '''如果模型中制定了模板,則使用該模板,否則使用默認(rèn)的模板'''

        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).

        猜你喜歡
        列表視圖用法
        巧用列表來推理
        address的高級用法你知道嗎?
        學(xué)習(xí)運用列表法
        擴列吧
        “作”與“做”的用法
        5.3 視圖與投影
        視圖
        特殊用法
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        久久久久人妻精品一区二区三区 | 久久国产精品二国产精品| 国产精品国产三级国产专区5o| 中文字幕 在线一区二区| 国产一区国产二区亚洲精品| 97久久草草超级碰碰碰| 国产视频毛片| 熟女丝袜美腿亚洲一区二区三区| 日本黄色3级一区二区| 无码精品人妻一区二区三区av| 无码中文字幕加勒比一本二本| 看黄色亚洲看黄色亚洲| 久久久精品毛片免费观看| 乱子伦在线观看| 亚洲天堂在线视频播放| 伊人久久婷婷综合五月97色| 国产精品高清视亚洲乱码| 久久不见久久见中文字幕免费| 性导航app精品视频| 午夜av福利亚洲写真集| 亚洲乱码中文在线观看| 中国内射xxxx6981少妇| 91亚洲人成手机在线观看| 国产91久久精品成人看网站| 国产区精品一区二区不卡中文| 日韩精品无码一区二区三区视频 | 國产一二三内射在线看片| 国产人成在线成免费视频| 国产精品对白一区二区三区| 极品av麻豆国产在线观看| 无遮挡十八禁在线视频国产制服网站| 蜜桃激情视频一区二区| 五十六十日本老熟妇乱| 少妇高潮惨叫喷水在线观看| 青青青伊人色综合久久| 国产精品第一二三区久久| 色八区人妻在线视频免费| 97久久久久国产精品嫩草影院| av在线免费观看男人天堂| 女人和拘做受全程看视频| 成人动漫久久|