前言
之前我们在路由匹配的时候,一个url对应一个函数,其实我们还可以一个url对应一个类,这个就是CBV,下面我们来简单的介绍一下CBV
一、CBV的基本用法
1、在路由匹配中要这样写,class_login是对应的类,as_view()是固定写法,必须要这么写,记住后面有个括号
url(r'^class_login/', views.class_login.as_view()),
2、在视图函数中导入一个模块
from django import views
3、在视图函数中写一个类,如果是get请求,则执行get方法,如果是post请求,则执行post方法
class class_login(views.View): # 1、如果是get请求,则执行get函数 @method_decorator(outer) def get(self,request,*args,**kwargs): print(request.path) return HttpResponse("yyyyyy") # 2、如果是post请求,则执行post函数 def post(self,request,*args,**kwargs): pass
4、post和get请求是最常见的,还有其他的方法,我们看下视图函数中继承的父类View中的方法,还支持如下这么多的方法
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
二、装饰器
上面基本的用法我们就已经介绍完了,如果要用装饰器,该怎么弄呢?
1、需要导入一个模块
from django.utils.decorators import method_decorator
2、然后定义一个装饰器
def outer(func): def inner(request,*args,**kwargs): print(request.method) rep = func(request,*args,**kwargs) return rep return inner
3、我们该如何把装饰器加的类中的,就需要用到我们第一步导入的模块了
3_1、为类中的一个函数添加装饰器,方法如下
@method_decorator(outer) def get(self,request,*args,**kwargs): print(request.path) return HttpResponse("yyyyyy")
3_2、为类中的所有的方法添加装饰器,方法如下
@method_decorator(outer,name="dispatch") class class_login(views.View): # 1、如果是get请求,则执行get函数 # @method_decorator(outer) def get(self,request,*args,**kwargs): print(request.path) return HttpResponse("yyyyyy") # 2、如果是post请求,则执行post函数 def post(self,request,*args,**kwargs): pass
dispatch就是django默认给我们定义的方法,在执行get或者post方法之前会执行的一个方法
4、子类如果想调用父类的方法,有两种方法来实现
class login(views.View): def dispatch(self, request, *args, **kwargs): # 调用父类的dispatch方法的两种方法 # 方式1 super(login,self).dispatch(request,*args,**kwargs) # 方式2 super().dispatch(request, *args, **kwargs) return HttpResponse("ok") def get(self,request): return HttpResponse("get") def post(self,rquest): return HttpResponse("post")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
django,cbv类,用法
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。