django 基本使用教程

django-admin startproject 工程名

2. 创建应用

cd 工程名
mkdir apps
cd apps
python3 ../manage.py startapp 应用名

3. 数据库迁移 3.1 将应用添加到setting.py 的INSTALLED_APPS 中

django 基本使用教程

3.2 生成迁移文件

python3 manage.py makemigrations

3.3 迁移

python3 manage.py migrate

4. 配置静态文件路径

STATIC_URL 访问静态文件的URL前缀
STATICFILES_DIRS 存放查找静态文件的目录

5. 数据库增加 save from . import models people = models.PeopleInfo(name="hhh", age=3) people.save() create from . import models people = models.PeopleInfo.objects.create(name="hhh", age=3) 6. 数据库修改 save people = PeopleInfo.objects.get(name=\'hhh\') people.name = "HHH" people.save() update PeopleInfo.objects.filter(name="HHH").update(name="HhH") 7. 数据库删除 模型类对象.delete() people = PeopleInfo.objects.get(name="HhH") people.delete() 模型类.objects.filter().delete() PeopleInfo.objects.filter(name="HHH").delete() 8. 数据库查询 8.1 基本查询 8.1.1 get查询单一结果,如果不存在则会抛出 模型类. DoesNotExist 异常 PeopleInfo.objects.get(name="HHH") 8.1.2 all 查询多个结果 PeopleInfo.objects.all() 8.1.3 count 查询结果数量 PeopleInfo.objecrs.count() 8.2 过滤查询

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggpyf.html