Django学习笔记(03)---MTV与MVC架构2.0的path

Django学习笔记(03)MTV与MVC架构/2.0的path

1 MTV与MVC的区别

MVC

Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:

django 是MTV架构,本质也是mvc
	-M:model,数据库相关操作
    -T:template,模板文件(就是mvc的v层)
    -V:view,视图(路由+V=MVC的控制器)

MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

MVC架构:主流的web框架都是mvc
	-Web应用分为模型(M),控制器(C)和视图(V)
    -M:model,数据库相关操作
    -C:controler控制器,逻辑相关,逻辑代码
    -V:视图,模板文件

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:


通过以上两种设计模式的比较, 我们可以得出 MTV 是 MVC 的一种细化,将原来 MVC 中的 V 层拿出来进行分离,视图的显示与如何显示交给 Template 层,而 View 层更专注于实现业务逻辑。其实在 Django 是有 Controller 层的,只不过它由框架本身来实现,所以我们不用关心它。Django 更关注于M、T 和 V。

2 django请求生命周期

0 近几年python中的几个web框架,sanic,fastapi(异步框架)

1 python中的web服务器都符合wsgi协议

2 web服务器,任何语言都会有一个web服务器,负责把http请求转成这门语言的变量
	-python:wsgiref(性能很低),uwsgi(C语言写的),200多并发量
    -java:tomcat,jboss(300多并发量)
    -php:php服务器


## 3 虚拟环境讲解,pycharm配置
1 虚拟环境作用:隔离项目,每个项目有自己依赖的模块和包,不同模块和包的版本就不会相互影响
2 pycharm中配置虚拟环境

4 orm概述

注: orm前面已经写过一篇文章详情请 点击了解

1 orm:对象关系映射(跟语言无关)
    	数据库中的表     ----》对应程序的一个类
        数据库中的一行数据----》对应程序中的一个对象
2 python中常见orm框架
	-django的orm框架
    -sqlachemy orm框架
    
3 java:(扩展),java中写web项目
	ssh框架 :spring+struts(有漏洞)+hibernate(orm框架) (我的那个年代)
	ssm框架:spring+springmvc+mybatis(orm框架,可以写原生sql)
    springboot:sb框架 ,tomcat内置进去了
    springcloud:微服务
4 orm能干的事
	-创建表(不能创建数据库,手动创建数据库)
    -增加删除表内字段
    -增删查改数据

5 django中orm的使用

0 sqlite:也是要给数据库,文件数据库,一个库就是要给文件,不需要单独安装
	-咱们现在在用,也要用到关系型数据库,不想装mysql,就可以使用sqlite
    -移动开发本地存储数据,存在sqlite中

1 创建个UserInfo表,在models中写一个类
2 表中有字段(类属性),字段有属性,


第一步在models中写要给类
	class UserInfo(models.Model):
        字段属性--》后面那个对象决定的,
        改字段自增,并且是主键
        id = models.AutoField(primary_key=True)
        改字段是varchar类型,长度为32(唯一约束,是否是索引,默认值是,是否可以为空)
        name = models.CharField(max_length=32)
        密码字段
        password =models.CharField(max_length=64)
第二步,把表创建出来(执行两个命令)
	-python3 manage.py makemigrations 这条命令会在migrations创建一条记录,数据库变更记录
    -python3 manage.py migrate        把更改同步到数据库

6 django2.0版的path

12.x以后,建议使用path,是一个准确路径
2 使用正则方式,推荐使用re_path,用法跟url一模一样

7 path转化器

1 5个内置转换器
'''
    str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
    int,匹配正整数,包含0。
    slug,匹配字母、数字以及横杠、下划线组成的字符串。
    uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
    path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
'''

2 例子
	-path('login/<int:year>', views.login),
    -path('login/<str:year>', views.login),
    -path('login/<path:p>', views.article),
3 高级例子
	-实现匹配这种路径:http://127.0.0.1:8000/liuqingzheng/p/4444.html
    -path('<str:name>/p/<int:id>.html', views.article),
    -re_path(r'^(?P<name>.*?)/p/(?P<id>\d+).html$', views.login),
    -url(r'^(?P<name>.*?)/p/(?P<id>\d+).html$', views.login),  # url在2.x以后不建议使用
    
4 转换器可以不可以在re_path中使用?不能!!!!

8 自定义转化器(不重要)

1 写一个类
	-regex属性:这里写的正则表达式就能匹配
    -to_python方法
    -to_url 方法
    
2 注册这个类
	register_converter(类名, 'lqz')  
    
3 使用在path中更使用
	path('<lqz:name>/', views.article),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值