首页 > 其他分享 >可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析

可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析

时间:2022-12-12 21:11:55浏览次数:38  
标签:匹配 流程图 改查 视图 django test path 路由

可视化界面之数据增删改查

针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取
在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看

'''
form表单中能够触发调剂动作的按钮只有两个
	<input type='submit'/>
	<button></button>
'''


1.数据展示功能
	开设接口、获取数据、传递页面、展示数据
2.数据添加功能
	开设接口、获取数据、发送数据、校验数据、录入数据、重定向
3.数据编辑功能
	开设接口、后端如何区分所要编辑的数据(问号携带参数)、后端获取用户数据、前端展示默认数据、获取用户并完成更新
4.数据删除功能
	开设接口、问号携带参数、删除二次确认

django请求生命周期流程图

image

1.浏览器发送一个基于HTTP协议的请求

2.进入web服务网关接口将请求来的数据拆解成一个request大字典

3.进入django框架里的中间件,相当于保安负责django安全性

4.进入django后端路由层完成功能匹配

5.进入视图层执行核心业务逻辑

6.执行核心业务逻辑的时候可能需要用到html页面,这时候就需要用到模板层

7.用模板的时候也可能用到数据库的数据,这时候用到模型层,由模型层帮你去跟数据库交涉

8.由orm把数据库返回的数据封装成一个数据对象,返回到视图层做一个模板语法,模板渲染

9.由视图层直接返回到中间件再做一层校验,怕携带危险数据

10.没问题会交给web服务网关接口封装数据发给浏览器
  • 学习流程
路由层、视图层、模板层、模型层、组件、BBS项目

django路由层

  • 1.路由匹配(路由结尾的斜杠)
path('网址后缀',函数名)
只要网址后缀匹配上了就会自动执行后面的函数并结束整个路由的匹配。
django2.X及以上 path第一个参数写什么就匹配什么
django1.X第一个参数是正则表达式
默认的情况下不写斜杠django会做二次处理,第一次匹配不上就会让浏览器自动加上斜杠再次请求。
django配置文件中可以指定是否自动添加斜杠:
APPEND_SLASH = False  # 取消斜杠二次处理机制
  • 2.path转换器
正常情况下很多网站都会有很多相似的网址 如果我们每一个都单独开设路由不合理
django2.X及以上版本路由动态匹配有转换器(五种)
str:匹配除路径分隔符外的任何非空字符串。
int:匹配0或者任意正整数。
slug:匹配任意一个由字母或数字组成的字符串。
uuid:匹配格式化后的UUID。
path:能够匹配完整的URL路径
ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)
  • 基本使用:
urls.py
path('func/<int:year>/<str:info>/', views.func)

views.py
def func(request,year,info):
    pass

# 转换器 将对应位置匹配到的数据转换成固定的数据类型
    path('index/<str:info>/', views.index_func),  # index_func(实参request对象,info='转换器匹配到的类型转换之后的内容')
    path('index/<str:info>/<int:id>/', views.index_func)  # index_func(实参request对象,info='转换器匹配到的类型转换之后的内容',id='转换器匹配到的类型转换之后的内容')

转换器匹配到的内容会当做视图函数的关键字参数传入,转换器有几个叫什么名字,那么视图函数的形参必须对应。

  • 3.re_path正则匹配
re_path(正则表达式,函数名)
django2.X及以上版本有re_path 第一个参数是正则

匹配的本质是只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功会立刻停止路由层其他的匹配直接执行对应的视图函数

re_patn('^test/$', views.test) #^是限制开头$是限制结尾

django1.X路由匹配使用的是url() 功能与django2.X及以上的re_path()一致

  • 4.正则匹配之无名分组
    re_path('^test/(?P<year>\d{4})/', views.test)
    

路由匹配成功之后就会调用视图函数默认情况下会自动给视图函数传递一个request位置参数

def test(request):
    return HttpResponse('测试')

如果路由匹配中使用括号对正则表达式进行了分组,那么在调用视图函数的时候,会将括号内匹配到的内容当做位置参数传递给视图函数。

# test(request,括号内正则表达式匹配到的内容) 
例子:正则匹配到的内容是123
def test(request,123):
    return HttpResponse('测试')
  • 5.正则匹配之有名分组
re_path('^test/(?P<year>\d+)/(?P<others>.*?)/',views.test)

给括号内的正则表达式起别名之后,匹配成功则会讲括号内匹配到的内容按照关键字参数传递给视图函数。

# testadd(request,user_id=括号内正则表达式匹配到的内容)
例子:正则匹配到的内容是123
def test(request,user_id=123):
    return HttpResponse('测试')
  • 两者是否可以混合使用?
url(r'^test/(\d+)/(?P<year>\d+)/$', views.testadd)  # 不可以 无名有名分组不能混合使用!!! 单个可以重复使用
url(r'^test/(\d+)/(\d+)/$', views.testadd)   # 可以
url(r'^test/(?P<a>\d+)/(?P<b>\d+)',views.testadd)  # 可以

反向解析

a标签的href可以写网址的全称,也可以写后缀。

href='https://www.baidu.com'
href='/login/'  # 自动补全当前服务的ip和port  href='127.0.0.1:8000/login/'

页面上有很多a标签链接了其他路由,一旦路由发送变化会导致所有页面相关链接失效。

为了防止出现该问题,我们需要使用反向解析

反向解析:返回一个结果,该结果可以访问到对应的路由。

步骤一:路由对应关系起别名

path('register/', views.reg, name='reg_view')

步骤二:使用反向解析语法

html页面:

html页面上模板语法 {% url 'reg_view' %}  # reg666/ 结果可以访问路由
例子:<a href="{% url 'reg_view'  %}">reg_view</a>

后端:

from django.shortcuts import reverse
reverse('reg_view')  # reg666/ 结果可以访问路由
  • 无名有名反向解析

    步骤一:路由对应关系起别名

    path('reg/<str:info>/', views.reg, name='reg_view')
    

    步骤二:使用反向解析语法

    当路由中有不确定的匹配因素,反向解析的时候需要人为给出一个具体的值

    html页面:

    html页面上模板语法 {% url 'reg_view' 'jason' %}
    

    后端:

    from django.shortcuts import reverse
    reverse('reg_view', args=('jason',))
    

标签:匹配,流程图,改查,视图,django,test,path,路由
From: https://www.cnblogs.com/wxlxl/p/16977093.html

相关文章

  • Django3
    django请求生命周期流程图1.Django请求的生命周期的含义Django请求的生命周期是指:当用户在浏览器上输入URL到用户看到网页的这个时间段内,Django后台所发生的事情。2.Dj......
  • django路由层知识
    今日内容概要作业讲解(数据增删改查)django请求生命周期流程图django路由层python虚拟环境(跳过)反向解析路由分发名称空间今日内容详细可视化界面之数据增......
  • django路由层
    上周内容回顾静态文件及相关配置1.静态文件的概念 简单的理解为html页面需要使用到的不经常变化的资源 css文件、js文件、img文件、第三方文件2.静态文件配......
  • Django路由层的匹配
    前日内容回顾静态文件的配置页面中不需要经常修改的内容(样式、脚本、图片等)采用静态文件的方式保存,需要在Django的配置文件中注册相应的文件地址。request对象方......
  • 可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析、
    目录可视化界面之数据增删改查django请求生命周期流程图django路由层反向解析可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模......
  • 可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''for......
  • 常用到的数据库表增删改查操作
    工作中,常用到的几个关于表的操作,做个记录:1.表的查询查询数量:SELECTcount(*)FROM表名;查询多个字段内容:SELECT字段1,字段2,字段3FROM表名;查询多个字段下的......
  • django 03 django路由层
    django请求生命周期流程图  django路由层#1.路由匹配django1.x第一个参数是正则表达式django2.x+path第一个参数写什么就匹配什么......
  • ORM数据增删改查 django请求生命周期 django路由层 反向解析
    目录可视化界面之数据增删改查补充1.建表2.数据展示功能3.数据添加功能4.数据编辑功能5.数据删除功能django请求生命周期流程图crsfwsgirel与uwsginginxdjango路由层1.路......
  • django之路由层
    django请求生命周期流程图特别注意:WSGI是协议,而wsgiref与uwsgi是基于WSGI协议实现的功能django路由层1.路由匹配 django2.x及以上 path第一个参数写什么就匹配什么......