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

相关推荐
小白—人工智能12 分钟前
数据分析 —— 数据预处理
python·数据挖掘·数据分析
若叶时代14 分钟前
数据分析_Python
人工智能·python·数据分析
英英_24 分钟前
python 爬虫框架介绍
开发语言·爬虫·python
大模型铲屎官1 小时前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__2 小时前
Python训练营打卡 Day27
开发语言·python
Stara05112 小时前
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
人工智能·python·深度学习·神经网络·目标检测·计算机视觉·yolov11
那雨倾城4 小时前
使用 OpenCV 将图像中标记特定颜色区域
人工智能·python·opencv·计算机视觉·视觉检测
LuckyTHP6 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
mahuifa8 小时前
(7)python开发经验
python·qt·pyside6·开发经验
学地理的小胖砸9 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql