python django框架学习笔记--大结局
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python django框架学习笔记--大结局相关的知识,希望对你有一定的参考价值。
一、数据库同步操作技巧
1、认识一个目录
目录名:migatations
作用,用来存放通过makemigrations命令生成的数据库脚本。app目录下必须要有migrations目录切目录下必须要有__init__.py才能正常的使用数据库同步功能。
2、认识一张数据表(django_migrations)
表中的字段:
app:app名字
name:脚本的文件名称
applied:脚本执行时间
3、数据库相关的命令
flush:清空数据库-恢复数据库到最初的状态
makemigrations:生成数据库同步的脚本
migrate:同步数据库
showmigrations:查看生成的数据库同步脚本
sqlflush:查看生成清空数据库的脚本
sqlmigrate:查看数据库同步的SQL语句
一些笨拙的解决办法:开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决办法一是分析生成的数据库脚本和django_migrations中的同步记录是否匹配,另一个简单粗暴的方法就是把migrations目录下的脚本(除__init__.py)之外全部删掉,再把数据库删掉之后创建一个新的数据库,数据库同步操作再重新做一遍。(慎用)
二、ORM常用操作
1、增加
create和save方法
objects:这是model默认管理器,create是这个管理器里面的方法
插入主外键关系的时候,可以用对象的方式,也可以直接以关联id的方式。
插入多对多管理的时候要分布操作。
save方法是model对象的方法
2、修改
update和save方法
update方法是QuerySet对象的方法
3、查询(惰性机制)
所谓惰性机制:Publisher.objects.all()只是返回了一个QuerySet(查询结果集对象),并不会马上执行sql,而是当调用QuerySet的时候才执行
4、删除
delete方法
django中删除模式是级联删除
三、查询常用API
django.db.models.query.QuerySet
QuerySet的特点:
1、是可迭代的。2、可切片
查询相关的API:
1、get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结果有且只有一个。如果符合筛选条件的对象超过一个,就会抛出MultipleObjectsReturned一场,如果没有找到符合筛选条件的对象,就会抛出DoesNotExist异常.
2、all():查询所有结果
3、filter(**kwargs):它包含了与所给的筛选条件相匹配的对象。
4、exclude(**kwargs):它包含那些与所给筛选条件
5、order_by(*fields):对查询结果排序
6、reverse():对查询结果反向排序
7、distinct():从返回结果中剔除重复记录
8、values(*fields):返回一个ValuesQuerySet--一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列。
9、values_list(*fields):它与values()非常相似,只不过后者返回的结果是字段序列,而values_list()返回的结果是元祖序列。
10、count():返回数据库中匹配查询(QuerySet)的对象数量
11、first():返回第一条记录,等价于[::-1][0]
12、last():返回最后一条记录,等价于[::-1][0]
13、exist():如果QuerySet包含有数据,就返回True,否则返回False。
更多:http://docs.djangoproject.com/en/1.9/ref/models/querysets/
多表查询技巧:
_:两个下划线可以生成连接查询,查询关联的字段信息
_set:提供了对象访问相关联表数据的方法。但是这种方法只能是相关类访问定义了关系的类(主键类访问外键类)
聚集查询和分组查询:
1、annotate(*args,**kwargs):可为QuerySet中每个对象添加注解。可以通过计算查询结果中每个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和,等等)用于分组查询。
2、aggregate(*args,**kwargs):通过对QuerySet进行计算,返回一个聚合值的字段。aggregate()中每个参数都指定一个包含在字段中的返回值。用于聚合查询。
聚合函数(Aggregation Functions):
所在位置:Django.db.models
1、Avg:返回所给字段的平均值
2、Count:根据所给关联字段返回被关联model的数量
3、Max:返回所给字段的最大值
4、Min:返回所给字段最小值
5、Sum:计算所给字段值的总和
使用原生SQL:
1、extra:结果集修改器,一种提供额外查询参数的机制。
2、raw:执行原始SQL并返回模型实例
3、直接执行自定义SQL
(第三种方式完全不依赖model,前面两种方式还要依赖于model)
四、常用模版标签及过滤器
1、模版的组成
HTML代码+逻辑控制代码
2、逻辑控制代码的组成
(1)变量(使用双大括号来引用变量)
{{var_name}}
(2)标签(tag)的使用(使用大括号和百分号的组成来标识使用tag)
{%load staticfiles%}
(3)过滤器(filter)的使用
{{ship_date|date:"Fj,Y"}},ship_date变量传给data过滤器,data过滤器通过使用“Fj,Y”这几个参数来格式化日期数据。“|”代表类似Unix命令中的管道操作。
以上是关于python django框架学习笔记--大结局的主要内容,如果未能解决你的问题,请参考以下文章
Python-Django框架学习笔记——第二课:Django的搭建
基于Django Web框架(Python)实现简单的学生管理系统 -------学习笔记
Python全栈100天学习笔记Day41 Django深入理解框架