首页 > 其他分享 >第十二周总结

第十二周总结

时间:2022-12-18 19:55:21浏览次数:39  
标签:第十二 总结 匹配 查询 ORM 路由 path 模板

路由匹配
django2.x及以上path第一个参数写什么就匹配什么,django1.x第一个参数是正则表达式

转换器(动态匹配)
str:匹配除路径分隔符外的任何非空字符串(常用)
int:匹配0或者任意正整数(一般)
path:能够匹配完整的URL路径

正则匹配的无名分组
re_path('^test/(\d{4})/',views.test)
会将括号内正则匹配到的内容当做位置参数传递给视图函数

正则匹配的有名分组
re_path('^test/(?P<year>\d{4})/',views.test) test(实参request对象,year='\d{4}匹配到的内容',others='.*?匹配到的内容')
会将括号内正则匹配到的内容当做关键字参数传递给视图函数
注意:有名和无名不能混合使用!!!

反向解析:通过一个名字可以反向解析出一个结果,该结果可以访问到某个对应的路由
基本使用
1.路由匹配关系起别名 path('login/',views.login, name='login_view')
2.反向解析语法
html页面上模板语法{%url 'login_view'%}
后端语法  reverse('login_view')

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

django支持每个应用都可以有自己独立的路由层、静态文件、模板层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起

多个应用都有很多路由与视图函数的对应关系 这个时候可以拆分到各自的路由层中

使用路由分发之前 总路由直接干路由与视图函数的匹配
	path('index/', index)
使用路由分发之后 总路由只按照应用名分配匹配方向
	path('app01/', include('app01.urls'))

名称空间
路由分发之后,针对相同的别名能否自动反向解析出不同的应用前缀,默认情况是无法自动识别应用前缀的
正常识别区分有2种方式:1.名称空间 2.别名不冲突即可

虚拟环境:能够针对相同版本的解释器创建多个分身,每个分身可以有自己的独立环境

模板层
{{}}:主要与数据值相关  {%%}:主要与逻辑相关(循环、判断)
django的模板语法是自己写的 跟jinja2不一样
1.针对需要加括号调用的名字,django模板语法会自动加括号调用
2.模板语法的注释前端浏览器是无法查看的

模板语法传值
传值方式1:指名道姓的传 
return render(request,'damo02.html',{'n1':name,'a1':age})
传值方式2:打包传值 适用于数据量较多的情况(偷懒)
'''locals()将当前名称空间中所有的名字全部传递给html页面'''
return render(request,'damo02.html',locals())

模板层之标签
{%if 条件%}
内容块
{%elif 条件%}
内容块
{%else%}
内容块
{%endif%}

{%for foo in d1%}
内容块
{%endfor%}

django模板语法取值操作:支持句点符

模板的继承与导入
1.在模板中使用block划定子板以后可以修改的区域
{% block 区域名称%}
{%endblock%}
2.子板继承模板
{%extends 'home.html'%}
{% block 区域名称%}
	子板自己的内容
{% endblock%}
ps:模板中至少应该有三个区域:页面内容区、css样式区、js代码区

模型层之单独搭建测试环境
1.拷贝manage.py前四行
2.自己再加两行
import django
django.setup()

ORM常用关键字
create() 创建数据并直接获取当前创建的数据对象
filter() 根据条件筛选数据,结果是QuerySet[数据对象]
first() last() QuerySet支持索引取值但是只支持正数,并且ORM不建议使用
update() 更新数据(批量更新)
delete() 删除数据(批量删除)
all() 查询所有数据 结果是QuerySet[数据对象]
values()根据指定字段获取数据 结果是QuerySet[{},{}]
values_list() 根据指定字段获取数据 结果是QuerySet[(),()]
distinct() 去重 数据一定要一模一样才可以,如果有主键肯定不行
order_by() 根据指定条件排序,默认是升序,字段前面加负号就是降序
get() 根据条件筛选数据并直接获取到数据对象 一旦条件不存在会直接报错
exclude() 取反操作
reverse()颠倒顺序(被操作的对象必须是经过排序才可以)
count() 统计结果集中数据的个数
exists() 判断结果集中是否含有数据 如果有则返回True,没有返回False

ORM外键字段
一对多 ORM与mysql一致 外键字段建在多的一方
多对多 ORM比Mysql有更多变化
	1.外键字段可以直接建在某张表中(查询频率较高),内部会自动创建第三张关系表
	2.自己创建第三张关系表并创建外键字段
一对一  ORM与mysql一致 外键字段建在查询较高的一方
	3.ORM创建
	针对一对多和一对一同步到表中之后会自动加_id的后缀
	publish=models.ForeignKey(to='Publish',on_delete=models.CASCADE)
	author_detail=models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)
	针对多对多 不会在表中有展示 而是创建第三张表
	authors = models.ManyToManyField(to='Author')

正反向查询的概念
	正向查询:由外键字段所在的表数据查询关联的表数据 正向
	反向查询:没有外键字段的表数据查询关联的表数据 反向
ORM跨表查询的口诀
	正向查询按外键字段
	反向查询按表名小写

聚合函数:Max Min Sum  Count Avg
在ORM中支持单独使用聚合函数 aggregate

分组查询关键字 annotate

查询的数据涉及到数据库里取建议使用F/Q

标签:第十二,总结,匹配,查询,ORM,路由,path,模板
From: https://www.cnblogs.com/winter-yu1989/p/16990827.html

相关文章

  • 队列总结_legend
    队列总结:Queue (1)队列的基本知识:        (1.1)特点:尾进头出,先进先出。(rearinfrontout)         (1.2)与线性表比较:        队列......
  • django总结
    内容导航django路由层内容详细django路由层1.路由匹配django2.X及以上path第一个参数些什么就匹配什么django1.X第一个参数是正则表达式无论匹配什么版本dja......
  • Nginx入门--学习总结
    Nginx入门核心功能:反向代理、负载均衡、动静分离nginx的安装、启动nginx常用命令,进入/usr/local/nginx/sbin./nginx--启动./nginx-sstop--停止nginx./ng......
  • 十二周总结
    十二周总结django请求生命周期流程图Django路由层1.路由匹配django1.X版本路由的第一个参数是正则表达式django2.X及以上版本的则是path写什么就匹配什么......
  • 第九周学习总结
    本周重温了ECCV2020上NeRF提出的论文,全文详细阅读了两遍,对其原理大概做到了心中有数:首先NeRF是在基于渲染角度提出的一个新的视图合成的办法,而所谓渲染,是将三维......
  • 周总结
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''for......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构常见编程规约
    编程规约方法参数类型必须一致,不要出现自动装箱拆箱操作2.1.1.1反例这种操作很容易产生难以排查的NPE异常/***反例*容易出现空指针异常,如果参数为null就会......
  • 第十二周总结
    目录django之路由层django请求生命流程路由匹配转换器正则匹配反向解析路由分发名称空间django视图层视图层之不会三板斧JsonResponse对象视图层之request对象获取文件视图......
  • 冒泡排序相关知识总结
    轮数表示冒泡排序外层循环的次数,次数表示交换次数。设排列为\(w\),冒泡排序的轮数为\(\max_{i=1}^{n}(i-w_i)\).因为如果\(i>w_i\),那么这个数每一轮会向目的地......
  • 周总结12
    周总结12学习内容:django路由层django模板层,django模型层路由层主要是用来做路由匹配调用对应的视图函数。匹配的方法有多种正常的就是path第一个内容填写的是路由,......