python_django_类视图的第一次忐忑碰触!!!
我们Django学到这里,基础知识阶段是已经完成了!!
在我们前面接触到的视图都是基于函数的视图函数我们可以称它为FBV,而今天我们新接触的就是视图函数的另一类CBV:基于类的视图函数,我们这里拓展这个知识也是为了给后面学习RESTful框架打基础,因为python的RESTful框架可能会完全推翻前面我们学习到的Django基础知识,但是MVC架构是不变的哈。
第一个CBV视图函数:
# views.py
from django.http import HTTPResponse
from django.views import View
class HelloCBV(View):
msg=None
def get(self,request): # 只接收get请求
return HTTPResponse('get request') def post(self,request): # 只接收post请求
return HTTPResponse('post request') def put(self,request): # 只接收put请求
return HTTPResponse('put request')
对应的urls.py
# urls.py
from django.urls import path
from . import views app_name = 'my_app'
urlpatterns = [
path('test/', views.test),
path('books/',views.HelloCBV.as_view(), name='books')
]
从上面的views.py函数我们可能注意到了,get/post/put作为了函数方法名,这里的方法名就比较神奇了,因为他就是拿来接收我们客户端的get/post/put请求的。我也觉得超级神奇!!
为啥会这么神奇呢??
因为我们类视图继承了View这个大类,所以连带着我们urls.py中接口的地方,都变成了
views.HelloCBV.as_view()
正因为这个as_view() 所以我们才会看到上面这么神奇的事。
我们阅读as_view()的源代码发现它是View类的方法,而View方法可以直接这样干的请求还有:
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
由此可知,我们上面这些方法也阔以这么干,嘿嘿嘿 ヾ(´∀`.ヾ)。
注意!!!
- 我们as_view()中可以传递参数,但是参数名称不能是get/post等请求方法名!!
好的,以上就是我今天摸了一下类视图函数的感觉,手感不错哦!!
python_django_类视图的第一次忐忑碰触!!!的更多相关文章
- Visual studio 类视图和资源视图不显示的问题
关于Visual studio 类视图和资源视图不显示的问题 解决方法: 1. 工具—选项—文本编辑器—C/C++—高级,浏览/导航下的禁用数据库选项置为False; 2. 输入命令:devenv / ...
- visual studio2010 “类视图”和“对象浏览器”图标
“类视图”和“对象浏览器”显示一些图标,这些图标表示代码实体,例如命名空间.类.函数和变量. 下表以图文并茂的形式说明了这些图标. 图标 说明 图标 说明 namespace 方法或函数 类 运算符 ...
- 在DJANGO的类视图中实现登陆要求和权限保护
以前接触的是基于函数的保护,网上材料比较多. 但基于类视图的很少. 补上! Decorating class-based views 装饰类视图 对于类视图的扩展并不局限于使用mixin.你也可以使用 ...
- Django内置的通用类视图
1.ListView 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须). 属性: model: 指定模型 te ...
- Part 4:表单和类视图--Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- Django学习笔记之视图高级-类视图
类视图 在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图.使用类视图可以使用类的一些特性,比如继承等. View django.views.generic.base.View是主 ...
- Django 类视图
引文 所有的类视图都继承django.views.generic.base.View类. 在URLconf中简单的使用通用视图 如果只是简单的做一些属性修改,可以使用as_view()方法,如下所示: ...
- python的Web框架,类视图
类视图 范式 from django.views import View # 继承View class IndexView(View): def get(self, request): #写法和函数视 ...
- Django框架的使用教程--类视图-中间间-模板[六]
类视图 类视图的使用 视图函数 class class_view(View): """类视图""" def get(self, reques ...
随机推荐
- 深度学习之Tensorflow 工程化项目实战 配套资源
https://www.aianaconda.com/index/CodeProject
- Django 模型层 ORM 操作
运行环境 1. Django:2.1.3 version 2. PyMysql: 0.9.3 version 3. pip :19.0.3 version 4. python : 3.7 versio ...
- WinForm解决UI假死
运行WinForm程序时,如果后台执行比较费时的操作,前天UI就会假死卡住,很影响使用感受,这里我们简单的解决一下这个问题 using System; using System.Collections ...
- 解决VMwave下卡死的办法
在VMwave路径下找到vmwave.log文件: 如上图所示:在资源监视器中找到name = vmwave-vmx.exe ,pid = 5940的进程,然后杀死.
- 离线安装gcc_rpm(centos下安装gcc的方法之一)
.解压gcc_rpm.tar.gz (我的CSDN账号下载过) tar -zxvf gcc_rpm.tar.gz .解压完进入文件夹,执行以下命令,挨个执行(如果报依赖错误,就加上"--fo ...
- DVR和NVR的区别(深度好文)(转)
DVR接模拟摄像机,NVR是接IP camera的录像机. DVR的录像效果取决于摄像机与DVR本身的压缩算法与芯片处理能力,而NVR的录像效果则主要取决于IPcamera,因为IPcamera输出的 ...
- 修改jquery默认的$
一.使用JQuery.noConflict() 该方法的作用就是让Jquery放弃对$的所有权,将$的控制权交还给prototype.js,因为jquery.js是后引入的,所以最后拥有$控制权的是j ...
- 阿里云ssh免密登陆突然无效
[root@node03 ~]# ssh-copy-id node02 root@node02's password: sh: .ssh/authorized_keys: Permission den ...
- nohup及crontab定时任务
一.关于nohup: 1.假设有一 tash.sh 启动是:nohup /home/spex/bin_prodDemo/task.sh & 一定 ...
- spring需要表
DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` ...