django之路由层
可视化界面之数据增删改查
数据对象主键字段的获取可以使用更加方便的 obj.pk获取
模型类中定义双下str能够让数据对象在被执行打印操作的时候,更便于查看。
# form表单触发调剂动作的按钮
1.<input type='submit'/>
2.<button></button>
# 数据展示功能
开设接口、获取数据、传递页面、展示数据
# 数据添加功能
开设接口、获取数据、发送数据、校验数据、录入数据、重定向
# 数据编辑功能
开设接口、后端如何区分所要编辑的数据(问号携带的参数)、后端获取用户数据、前端展示默认数据、获取用户并完成更新
# 数据删除功能
开设接口、问号携带参数、删除二次确认
django请求生命周期流程图
django路由层
# 路由匹配
django2.X及以上,path第一个参数写什么就匹配什么
django1.X第一个参数是正则表达式
django自带加斜杠后缀的功能,可取消
配置文件中,APPEND_SLASH = False
# 转换器
转换器能够将对应位置匹配到的数据转换成固定的数据类型。
大多数网站都会有相似的网址,因此每一个都单独开设路由是不合理的。
django2.X及以上版本路由动态匹配有5种转换器:
str:匹配除路径分隔符外的任何非空字符串;
int:匹配0或任意正整数;
slug:匹配任意一个由字母或数字组成的字符串;
uuid:匹配格式化后的uuid;
path:能够匹配完整的URL路径。
"还支持自定义转换器,即自己写正则表达式,从而匹配更加细化的内容。"
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='转换器匹配到的类型转换之后的内容')
# 正则匹配
django2.X及以上版本有re_path,第一个参数是正则
匹配本质:
只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功,就会立刻停止路由层其他的匹配直接执行对应的视图函数
re_path('^test/$',views.test)
django.x路由匹配使用的是url(),与django2.X及以上版本的re_path()功能一致
# 正则匹配的无名有名分组
无名分组
re_path('^test/(\d{4})/',views.test)
可以将括号内正则匹配到的内容当做位置参数传递给视图函数
有名分组
re_path('^test/(?P<year>\d{4})/',views.test)
可以将括号内正则匹配到的内容当做关键字参数传递给视图函数
"有名分组与无名分组不可混合使用"
反向解析
通过一个名字可以反向解析出一个结果,该结果可以访问到某个对应的路由
基本使用
1.路由匹配关系起别名
path('login001/',views.login,name='login_view')
2.反向解析语法
html页面上模板语法{% url 'login_view' %}
后端语法 reverse('login_view')
动态路由的反向解析
path('func1/<str:others>/',views.func1_func,name='func_view')
html页面模板语法{% url 'func1_view' 'jason'%}
后端语法 reverse('func_view',args=('嘿嘿嘿'))