Django框架——可视化界面之数据增删改查、Django请求生命周期、Django路由层、反向解析
可视化界面之数据增删改查
针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取
在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看
'''
form表单中能够触发调剂动作的按钮只有两个
<input type='submit'/>
<button></button>
'''
1.数据展示功能
开设接口、获取数据、传递页面、展示数据
2.数据添加功能
开设接口、获取数据、发送数据、校验数据、录入数据、重定向
3.数据编辑功能
开设接口、后端如何区分所要编辑的数据(问号携带参数)、后端获取用户数据、前端展示默认数据、获取用户并完成更新
4.数据删除功能
开设接口、问号携带参数、删除二次确认
Django请求生命周期

WSGI,uWSGI,uwsgi区别
WSGI是一个协议WSGI是一个协议,wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uWSGI需要将过来的请求转给django 处理,那么uWSGI 和 django的交互和调用就需要一个统一的规范,这个规范就是WSGI WSGI(Web Server Gateway Interface)
WSGI ---> 协议
uwsgi---> 协议
uWSGI---> 相当于服务器
#流程
user --> HTTP协议 --> NGINX --> uwsgi协议 --> uWSGI服务器 ---> WSGI --> Django


Django路由层
1.路由匹配
Django2.x及以上 path第一个参数写什么就匹配什么
Django1.x第一个参数就是正则表达式
无论什么版本Django都自带加斜杠后缀的功能 也可以取消
配置文件中 APPEND_SLASH = False # 默认是True 路由匹配的时候自动添加斜杠后缀
2.转换器
正常情况下很多网站都会有很多相似的网址 如果我们每个都单独开设路由不合理
Django2.x及以上版本路由动态匹配有转换器(五种)
str:匹配除路径分隔符外的任何非空字符串。
int:匹配0或者任意正整数。
slug:匹配任意一个由字母或数字组成的字符串。
uuid:匹配格式化后的UUID。
path:能够匹配完整的URL路径
ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)
# 转换器:将对应位置匹配到的数据转换成固定的数据模型
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.正则匹配
Django2.x及以上版本有re_path 第一个参数是正则
匹配的本质是只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功会立刻停止路由层其他的匹配直接执行对应的视图函数
re_path('^test/$', views.test)
django1.X路由匹配使用的是url() 功能与django2.X及以上的re_path()一致
4.正则匹配的无名有名分组
无名分组
django2.x ---> re_path('^test/(\d{4})/', views.test)
django1.x ---> url('^test/(\d{4})/', views.test)
会将括号内正则匹配到的内容当做位置参数传递给视图函数
有名分组
re_path('^test/(?P<year>\d{4})/',views.test)
会将括号内正则匹配到的内容当做关键字参数传递给试图函数
注意上述的分组不能混合使用!!!
反向解析
通过一个名字可以反向解析出一个结果 该结果可以访问到某个对应的路由
基本使用
1.路由匹配关系起别名
url(r'^login001/',views.login,name='login_view')
2.反向解析语法
html页面上模版语法 {% url 'login_view' %} # 起别名之后无论路由匹配中怎么改 在html页面中不需要修改 都固定是这个路由
后端语法 reverse('login_view') # 可以反向解析出一个地址 redirect可以直接重定向这个地址
动态路由的反向解析
path('func1/<str:others>/', views.func1_func, name='func1_view')
url(r'^func1/(?P<others>.*?)/',views.func1_func,name='func1_view')
html页面上模板语法 {% url 'func1_view' 'jason' %}
html页面上模板语法 {% url 'func1_view' ID %}
# 模版语法中的'jason'是上面你想要把路由后面匹配的字符串解析成什么 之后一般都是写数据的主键值 可以传多个 空格隔开即可
后端语法 reverse('func1_view', args=('嘿嘿嘿',))
# 在后端语法中 传参数的话需要用一个args接收一下就可以反向解析 args中放的是额外的动态部分 可以传多个 在args中逗号隔开即可
Django框架——可视化界面之数据增删改查、Django请求生命周期、Django路由层、反向解析的更多相关文章
- Django框架(三)—— orm增删改查、Django生命周期
目录 orm增删改查.Django生命周期 一.orm介绍 二.orm增删改字段 三.Django生命周期 orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
- ORM数据增删改查 django请求生命周期 django路由层 反向解析
目录 可视化界面之数据增删改查 补充 1.建表 2.数据展示功能 3.数据添加功能 4.数据编辑功能 5.数据删除功能 django请求生命周期流程图 crsf wsgirel 与 uwsgi ngi ...
- Django之数据增删改查、Django请求生命周期流程图、Django路由层(路由匹配、转换器、正则匹配)、反向解析
今日内容详细 可视化界面之数据增删改查 针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取 在模型类中定义__str__方法可以在数据对象被执行打印操作的时候方便查看 ''' form扁担 ...
- 12月12日内容总结——Django之数据增删改查、Django请求生命周期流程图、Django路由层(路由匹配、转换器、正则匹配)、反向解析
目录 一.可视化界面之数据增删改查 二.django请求生命周期流程图 三.django路由层 1.路由匹配 2.转换器 3.正则匹配 不同版本的区别 正则匹配斜杠导致的区别 4.正则匹配的无名有名分 ...
- Web界面实现数据库增删改查过程
实现方法:JSP+Servlet+JavaBean 基本实现思想:jsp文件为显示界面,包括增删改查四个界面,然后使用form或者href超链接的方法将网页获得的值传到Servlet中的方法里:而se ...
- salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的标签相对简单,如果需要深入了解VF相关知识以及标签, 可以通过以下链接查看或下载 ...
- C#操作Excel数据增删改查(转)
C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...
- C#操作Excel数据增删改查示例
Excel数据增删改查我们可以使用c#进行操作,首先创建ExcelDB.xlsx文件,并添加两张工作表,接下按照下面的操作步骤即可 C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文 ...
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
随机推荐
- 解决git仓库项目 添加到github非空仓库冲突问题 error: failed to push some refs to 'https://github.com/Qtoken/......'
error: failed to push some refs to 'https://github.com/Qtoken/......' 1. 问题描述:执行命令:git push origin m ...
- 什么是 SpringMvc
SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合
- mysql修改数据库表及字段的编码格式
1.修改表的编码格式 ALTER TABLE `table` DEFAULT CHARACTER SET utf8; 2.修改字段编码格式 ALTER TABLE `table` CHANGE `字段 ...
- 字符串练习2 最长抑或路径(01trie树)
题目链接在这里:P4551 最长异或路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 是一道比较经典的问题,对于异或问题经常会使用01trie树来解决. 当然01trie树只是用 ...
- Navicat 连接MySQL数据库 报错2059
Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法 2059 - Authentication ...
- 【Leetcode】 剑指offer:字符串(简单)--Day03
剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 逐字符遍历原字符串,遍历过程中对存放结果的字符串分情况更新. class Solu ...
- IPAD变成电脑的副屏
IPAD变成电脑的副屏方法一:把平板电脑变成显示器:Splashtop Wired XDisplayhttps://www.splashtop.cn/cn/wiredxdisplay方法二:space ...
- 在教学中常被问到的几个vue3.x与typescript的问题,统一解答
在教学当中,学生在学习vue3.x时,常常会问到typescript和vue3.x之间的关系,感觉这两个技术总是绑在一起的,下面老赵来统一解答一下: 那学vue3.x,为什么要求也要掌握typescr ...
- c/c++指针从浅入深介绍——基于数据内存分配的理解(上)
c/c++指针从浅入深介绍--基于数据内存分配的理解(上) 本文是对自我学习的一个总结以及回顾,文章内容主要是针对代码中的数据在内存中的存储情况以及存储中数值的变化来对指针进行介绍,是对指针以及数据在 ...
- Android笔记--文本显示
文本显示 设置文本内容 方式一: 在.xml文件中利用android:text属性设置文本 新创建一个.xml文件示范一下: 方式二: 在java代码中调用文本视图对象的setText方法设置文本 还 ...