Django大回顾-2 之 Django的基本操作、路由层,MTV和MVC模型

【1】MTV和MVC模型

MVC与MTV模型 --->所有web框架其实都遵循mvc架构

MVC模型

MVC 本来坨在一起的代码,拆到不同的位置

模型(M:数据层),控制器(C:逻辑判断)和视图(V:用户看到的)三层

他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求

MTV模型

M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。

M就是原来的M

T 代表模板 (Template):负责如何把页面展示给用户(html)。

T就是原来的V

V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template

V+路由 是原来的C

【2】Django的基本操作

【2.1】Django的安装

python 复制代码
pip install django==3.2.20



'''3.2.20是版本号'''





# 卸载Django

'''
pip uninstall django
'''

【2.2】创建Django项目

python 复制代码
django-admin startproject 项目名


'''
项目名必须写英文,不能写中文
一个窗口一个django项目
'''

【2.3】启动Django项目

python 复制代码
python manage.py runserver

python manage.py runserver 127.0.0.1:8000

'''
runserver后面可跟IP和端口,如果不写就默认是127.0.0.1:8000
'''

【2.4】创建应用

python 复制代码
python manage.py startapp 应用名

创建完应用需要立刻注册应用

'''
注册应用:
    在settings.py文件中的INSTALLED_APPS中添加应用名称
'''

【3】Djanog项目个文件的介绍

【4】 Django的请求生命周期流程图

【5】路由层

1、路由概念

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行

请求路径和要执行的视图函数的对应关系

2、如何使用

1、path:准确路径,精准匹配

2、re_path:相当于diango1版本的url -------- 正则匹配

urlpatterns = [] -------- 列表中的数据,必须是path或re_path的执行完的结果

3、path详细使用

path('index/', views.index) ------------ 相当于 _path(route, view, kwargs=None, name=None)

1、第一个参数:

准确路径,字符串

转换器:接收参数 ---------<int:pk>,<str:name>

127.0.0.1:8080/login/justin---->path('login/<str:name>', admin.site.urls)

在视图函数中必须接收name参数 def login(request,name)


2、第二个参数:视图函数的内存地址,不要加括号

  1. 路由一旦匹配成功就会执行,你写的这个视图函数(request),并且会把request对象传入

  2. 如果有分组的参数[有名,无名],或者转化器的参数,都会传递到视图函数中作为参数

  3. 总结:放要放视图函数地址---》但是视图函数的参数:第一个是固定必须是request,后续的取决于写没写转换器,写没写有名无名分组


3、第三个参数:kwargs 是给视图函数传递默认参数


4、第四个参数:路径的别名---》后期使用反向解析得到该路径

path五种转换器
转换器名称 描述
string 默认类型,接受不带斜杠的任何文本
int 接受正整数
float 接受正浮点值
path 接收string但也接受斜线
uuid 接受UUID(通用唯一识别码)字符串 xxxx-xxxx-xxxxx-xxxxx

4、re_path的详细使用

跟path除了第一个参数不一样,其他完全一样

第一个参数是:正则表达式

后期用的很少,危险性大---》原来之所以支持正则的目的是为了分组出参数

path通过转换器能完成这个操作--》于是--》这个几乎不用

5、反向解析

反向解释用在视图函数中,用在模板中。


没有转换器,反向解析的情况:

path('login/', login,name='login')

res=reverse('login') #当时 定义路径传入的name参数对应的字符串


有转换器,反向解析的情况:

path('login/<str:name>', login,name='login')

res=reverse('login',kwargs={name:lqz}) #当时 定义路径传入的name参数对应的字符串

生成这种路径:'login/lqz'

6、路由分发

默认路由匹配就能够匹配到url.py文件的原因:

在全局配置文件中就已经配置了 ----------- ROOT_URLCONF = 'djangoself1.urls'

每个应用都可以有自己的路由(在自己的应用下面创建urls) -------- 路由分发 include

相关推荐
大懒猫软件26 分钟前
如何运用python爬虫获取大型资讯类网站文章,并同时导出pdf或word格式文本?
python·深度学习·自然语言处理·网络爬虫
XianxinMao2 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
码农小灰2 小时前
Spring MVC中HandlerInterceptor和Filter的区别
java·spring·mvc
查理零世3 小时前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
汤姆和佩琦4 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
HyperAI超神经4 小时前
【TVM教程】为 ARM CPU 自动调优卷积网络
arm开发·人工智能·python·深度学习·机器学习·tvm·编译器
缺的不是资料,是学习的心5 小时前
使用qwen作为基座训练分类大模型
python·机器学习·分类
Zda天天爱打卡5 小时前
【机器学习实战中阶】使用Python和OpenCV进行手语识别
人工智能·python·深度学习·opencv·机器学习
martian6656 小时前
第19篇:python高级编程进阶:使用Flask进行Web开发
开发语言·python
gis收藏家6 小时前
利用 SAM2 模型探测卫星图像中的农田边界
开发语言·python