最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Django中類視圖使用裝飾器的方式

 更新時間:2018年08月12日 08:43:20   作者:skaarl  
這篇文章主要介紹了詳解Django中類視圖使用裝飾器的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

類視圖使用裝飾器

為類視圖添加裝飾器,可以使用兩種方法。

為了理解方便,我們先來定義一個為函數(shù)視圖準備的裝飾器(在設(shè)計裝飾器時基本都以函數(shù)視圖作為考慮的被裝飾對象),及一個要被裝飾的類視圖。

def my_decorator(func):
  def wrapper(request, *args, **kwargs):
    print('自定義裝飾器被調(diào)用了')
    print('請求路徑%s' % request.path)
    return func(request, *args, **kwargs)
  return wrapper

class DemoView(View):
  def get(self, request):
    print('get方法')
    return HttpResponse('ok')

  def post(self, request):
    print('post方法')
    return HttpResponse('ok')

4.1 在URL配置中裝飾

urlpatterns = [
  url(r'^demo/$', my_decorate(DemoView.as_view()))
]

此種方式最簡單,但因裝飾行為被放置到了url配置中,單看視圖的時候無法知道此視圖還被添加了裝飾器,不利于代碼的完整性,不建議使用。

此種方式會為類視圖中的所有請求方法都加上裝飾器行為(因為是在視圖入口處,分發(fā)請求方式前)。

4.2 在類視圖中裝飾

在類視圖中使用為函數(shù)視圖準備的裝飾器時,不能直接添加裝飾器,需要使用method_decorator將其轉(zhuǎn)換為適用于類視圖方法的裝飾器。

method_decorator裝飾器使用name參數(shù)指明被裝飾的方法

# 為全部請求方法添加裝飾器
@method_decorator(my_decorator, name='dispatch')
class DemoView(View):
  def get(self, request):
    print('get方法')
    return HttpResponse('ok')

  def post(self, request):
    print('post方法')
    return HttpResponse('ok')


# 為特定請求方法添加裝飾器
@method_decorator(my_decorator, name='get')
class DemoView(View):
  def get(self, request):
    print('get方法')
    return HttpResponse('ok')

  def post(self, request):
    print('post方法')
    return HttpResponse('ok')

如果需要為類視圖的多個方法添加裝飾器,但又不是所有的方法(為所有方法添加裝飾器參考上面例子),可以直接在需要添加裝飾器的方法上使用method_decorator,如下所示

from django.utils.decorators import method_decorator

# 為特定請求方法添加裝飾器
class DemoView(View):

  @method_decorator(my_decorator) # 為get方法添加了裝飾器
  def get(self, request):
    print('get方法')
    return HttpResponse('ok')

  @method_decorator(my_decorator) # 為post方法添加了裝飾器
  def post(self, request):
    print('post方法')
    return HttpResponse('ok')

  def put(self, request): # 沒有為put方法添加裝飾器
    print('put方法')
    return HttpResponse('ok')

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PyTorch實現(xiàn)聯(lián)邦學習的基本算法FedAvg

    PyTorch實現(xiàn)聯(lián)邦學習的基本算法FedAvg

    這篇文章主要為大家介紹了PyTorch實現(xiàn)聯(lián)邦學習的基本算法FedAvg,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python連接Kingbase的實現(xiàn)示例

    Python連接Kingbase的實現(xiàn)示例

    Kingbase是一種開源的數(shù)據(jù)庫管理系統(tǒng),與Oracle數(shù)據(jù)庫的語法和功能非常相似,本文主要介紹了Python連接Kingbase的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • Python常用的日期時間處理方法示例

    Python常用的日期時間處理方法示例

    這篇文章主要介紹了Python常用的日期時間處理方法示例,本文直接給出實現(xiàn)代碼,包含如給定日期向后N天的日期、昨天、今天、將字符串轉(zhuǎn)換成datetime類型等方法,需要的朋友可以參考下
    2015-02-02
  • python學習之plot函數(shù)的使用教程

    python學習之plot函數(shù)的使用教程

    這篇文章主要給大家介紹了關(guān)于python學習之plot函數(shù)的使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • PyCharm 2020.2下配置Anaconda環(huán)境的方法步驟

    PyCharm 2020.2下配置Anaconda環(huán)境的方法步驟

    這篇文章主要介紹了PyCharm 2020.2下配置Anaconda環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Pygame實戰(zhàn)之實現(xiàn)扎氣球游戲

    Pygame實戰(zhàn)之實現(xiàn)扎氣球游戲

    這篇文章主要為大家介紹了利用Python中的Pygame模塊實現(xiàn)的一個扎氣球游戲,文中的示例代碼講解詳細,對我們了解Pygame模塊有一定的幫助,感興趣的可以學習一下
    2021-12-12
  • 基于Python實現(xiàn)繪制簡單動圖的示例詳解

    基于Python實現(xiàn)繪制簡單動圖的示例詳解

    動畫是一種高效的可視化工具,能夠提升用戶的吸引力和視覺體驗,有助于以富有意義的方式呈現(xiàn)數(shù)據(jù)可視化,本文的主要介紹在Python中兩種簡單制作動圖的方法,需要的可以了解下
    2023-10-10
  • python實現(xiàn)圖像隨機裁剪的示例代碼

    python實現(xiàn)圖像隨機裁剪的示例代碼

    這篇文章主要介紹了python實現(xiàn)圖像隨機裁剪的示例代碼,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • Django多層嵌套ManyToMany字段ORM操作詳解

    Django多層嵌套ManyToMany字段ORM操作詳解

    這篇文章主要介紹了Django多層嵌套ManyToMany字段ORM操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python批量讀取txt文件為DataFrame的方法

    python批量讀取txt文件為DataFrame的方法

    下面小編就為大家分享一篇python批量讀取txt文件為DataFrame的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

恩平市| 上高县| 布尔津县| 祁连县| 高青县| 淮安市| 株洲县| 镇康县| 驻马店市| 巴东县| 浦城县| 东至县| 无棣县| 隆回县| 锦州市| 五家渠市| 炉霍县| 广安市| 铜川市| 黄石市| 锡林郭勒盟| 望城县| 北辰区| 龙州县| 乐陵市| 且末县| 淮阳县| 和田县| 安吉县| 纳雍县| 汾阳市| 吉首市| 海原县| 友谊县| 揭东县| 玉树县| 辽中县| 弋阳县| 广宗县| 如皋市| 舟曲县|