Django之数据增删改查、Django请求生命周期流程图、Django路由层(路由匹配、转换器、正则匹配)、反向解析
阅读原文时间:2023年07月08日阅读:2

今日内容详细

针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取

在模型类中定义__str__方法可以在数据对象被执行打印操作的时候方便查看

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


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

1.路由匹配

django2.x及以上 path第一个参数写什么就匹配什么
django1.x第一个参数是正则表达式
无论什么版本django的都自带斜杠后缀的功能 也可以取消
配置文件中 APPEND_SLASH = Flase

2.转换器

正常情况下很多网站都会有很多相似的网站 每一个都单独开发是不合理的
django2.x及以上版本路由动态匹配有转换器(5中)
    str:匹配除路径分隔符外的任何非空字符串
    int:匹配0或者任意正整数
    slug:匹配任意一个由字母或数字组成的字符串
    uuid:匹配和石化后的UUID
    path:能够匹配完整的URL路径
ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)
#转换器:将对应匹配到的数据转换成固定的数据类型
path('index/<str:info>/',views.index_func)
#index_func(实参request对象,info='转换器匹配到的类型转换之后的内容',id='转换器匹配到的类型转换之后的内容')

3.正则匹配

django2.x及以上版本有re_path 第一个参数是正则
匹配的本质是只要第一个正则表达式能够从用户输入的路由中匹配到数据 就算匹配成功会立刻停止路由层其他的匹配直接执行对应的视图函数
re_path('^test$',views.test)
django.x路由匹配使用的是url()功能与django2.X及以上的re_path()一致

4.正则匹配的无名有名分组

无名分组
    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('lohin_view')

动态路由的反向解析
    path('func1/<str:others>/',views.func1_func,name='func1_view')
    html页面上模板语法 {% url 'func1_view' 'jason' %}
     后端语法          reverse('func1_view', args=('嘿嘿嘿',))