django框架

8,187 阅读3分钟

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

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

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


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

django请求生命周期流程图

  • 学习流程:路由层、视图层、模板层、模型层、组件、BBS项目

路由层

1.路由匹配
  django2.x及以上 path第一个参数写什么就匹配什么
  django1.x第一个参数是正则表达式
  无论什么版本的django都自带斜杠后缀的功能  也可以取消
  配置文件中 APPEND_SLASH = False
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.正则匹配的无名有名分组
  无名分组
    re_path('^test/(\d{4})/,view.test')
    会将括号内正则匹配到的内容当作位置参数传递给视图函数
  有名函数
     re_path('^test/(?p<year>\d{4})/',views.test)
     会将括号内正则匹配到的内容当作关键字参数传递给视图函数
     上述的分组不能混合使用

反向解析

 通过一个名字可以反向解析出一个结果  给结果可以访问到某个对应的路由

 基本使用
    1.路由匹配关系起别名
       path('login001/',views.login, name='login_view')
    2.反向解析语法
        html1页面上模板语法{% url 'login_view' %}
        后端语法           reverse('login_view')


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