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

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

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

類視圖使用裝飾器

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

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

def my_decorator(func):
  def wrapper(request, *args, **kwargs):
    print('自定義裝飾器被調(diào)用了')
    print('請(qǐng)求路徑%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()))
]

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

此種方式會(huì)為類視圖中的所有請(qǐng)求方法都加上裝飾器行為(因?yàn)槭窃谝晥D入口處,分發(fā)請(qǐng)求方式前)。

4.2 在類視圖中裝飾

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

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

# 為全部請(qǐng)求方法添加裝飾器
@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')


# 為特定請(qǐng)求方法添加裝飾器
@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')

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

from django.utils.decorators import method_decorator

# 為特定請(qǐng)求方法添加裝飾器
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')

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

    Python常用的日期時(shí)間處理方法示例

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

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

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

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

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

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

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

    基于Python實(shí)現(xiàn)繪制簡(jiǎn)單動(dòng)圖的示例詳解

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

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

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

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

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

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

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

最新評(píng)論

通城县| 灵丘县| 大同市| 徐水县| 抚宁县| 包头市| 永城市| 吕梁市| 公主岭市| 鸡泽县| 明水县| 开封县| 邵阳县| 会理县| 内江市| 昆明市| 屯昌县| 黔南| 吉水县| 怀宁县| 佳木斯市| 枣庄市| 伊川县| 霞浦县| 北票市| 清河县| 扶风县| 萨迦县| 南阳市| 神池县| 连南| 阜新| 堆龙德庆县| 繁峙县| 始兴县| 靖宇县| 浪卡子县| 海丰县| 团风县| 凤冈县| 大丰市|