django-admin startproject 工程名
2. 创建应用cd 工程名
mkdir apps
cd apps
python3 ../manage.py startapp 应用名
python3 manage.py makemigrations
3.3 迁移python3 manage.py migrate
4. 配置静态文件路径STATIC_URL 访问静态文件的URL前缀
STATICFILES_DIRS 存放查找静态文件的目录
filter 过滤出多个结果
exclude 排除过滤掉符合条件剩下的结果
get过滤单一结果
过滤条件表达语法如下
属性名称__比较运算符=值 # 注意 属性名称 和 比较运算符之间是两个_
exact:表示判等
# 查询PeopleInfo表中id为1的对象 PeopleInfo.objects.filter(id__exact=1) 可以简写 PeopleInfo.objects.filter(id=1) 模糊查询contains:表示是否包含
# 查询PeopleInfo表中name字段包含H的对象 PeopleInfo.objects.filter(name__contains="H") 空查询isnull:是否为null
# 查询PeopleInfo表中name不为空的对象 PeopleInfo.objects.filter(name__isnull=True) 范围查询(非连续)in:是否包含在范围内
# 查询PeopleInfo表中id为1,3,5的对象 PeopleInfo.objects.filter(id__in=[1,3,5]) 范围查询(连续)range:是否包含在范围内
# 查询PeopleInfo表中id为1到5之间的对象 PeopleInfo.objects.filter(id__range=[1,5]) 比较查询gt:大于
gte:大于等于
lt:小于
lte:小于等于
# 查询id大于3的对象 PeopleInfo.objects.filter(id__gt=3) 返回满足条件以外的数据exclude()
# 查询id不等于3的对象 PeopleInfo.objects.exclude(id__exact=3) 日期查询pub_date 字段为 models.DateField(verbose_name=\'发布日期\', null=True)
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算
# 查询People表中pub_date字段的值为1998的 PeopleInfo.objects.filter(pub_date__year=1998) # 查询People表中pub_date字段的值大于1998-1-1的 PeopleInfo.objects.filter(pub_date__gt=\'1998-1-1\') 8.3 字段值进行比较from django.db.models import F
8.3.1 F对象使用方法: F(属性名)
# 查询money字段大于 age乘10 PeopleInfo.objects.filter(money__gt=F("age")*10) 8.4 多条件过滤 8.4.1 Q对象进行多个条件查询使用方法: Q(属性名__运算符=值)
# 查询 age 字段等于1 money大于500 PeopleInfo.objects.filter(Q(age=1),Q(money__gt=500)) PeopleInfo.objects.filter(Q(age=1)&Q(money__gt=500)) # 查询 age 字段等于1 或 money大于500 PeopleInfo.objects.filter(Q(age=1)|Q(money__gt=500)) # 查询 age 字段等于1 money小于等于500 PeopleInfo.objects.filter(Q(age=1), ~Q(money__gt=500)) 8.4.2 多个条件查询 # 查询 age 字段等于2 money 字段大于5000 PeopleInfo.objects.filter(age__gt=2, money__gt=3000) # 查询 age 字段等于2 id字段大于3 PeopleInfo.objects.filter(age__gt=2).filter(id__gt=3) 8.5 关联查询 由一到多使用方法: 一对应的模型类对象.多对应的模型类名小写_set
people = PeopleInfo.objects.get(id=1) books = peopel.book_set.all() 由多到一使用方法: 多对应的模型类对象.多对应的模型类中的关系类属性名
book = Book.objects.get(id=1) peoples = book.people 获取由多对一,获取一的属性值使用方法:多对应的模型类对象.关联类属性_id 可以为id 也可以 为其他字段
book = Book.objects.get(id=1) book.people_id 9. 聚合函数使用aggregate() 过滤器用来聚合函数
Avg平均
Count 数量
Max 最大
Min 最小
Sum 求和
from django.db.models import Sum # 查询书的总量 BookInfo.objects.aggregate(Sum(\'readcount\')) 10. 排序默认升序
PeopleInfo.objects.all().order_by(\'id\')降序
PeopleInfo.objects.all().order_by(\'-id\') 11. 分页 Paginator类方法 序号 方法名 说明1 page(self, number) 返回第number页的page类实例对象
Paginator类属性 序号 属性名 说明
1 num_pages 返回分页之后的总页数
2 page_range 返回分页后的页码列表
Paginator实例方法 序号 方法名 说明
has_previous 判断当前页是否有前一页
has_next 判断当前页是否有下一页
previous_page_number 返回前一页的页码
next_page_number 返回下一页的页码
Paginator实例属性 序号 属性名 说明
1 number 返回当前页的页码
2 object_list 返回当前页的数据查询集
3 paginator 返回对应的Paginator类对象
# 查询数据 books = BookInfo.objects.all() # 导入分页类 from django.core.paginator import Paginator # 创建分页实例 paginator = Paginator(books, 2) # 每页有2个数据 # 获取指定页码的数据 page_books = paginator.page(1) # 第1页 # 获取分页数据 total_page=paginator.num_pages