栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django 启动第一步

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django 启动第一步

1. 创建工程

django-admin startproject 工程名

2. 创建应用

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

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

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类方法

序号方法名说明
1page(self, number)返回第number页的page类实例对象

Paginator类属性

序号属性名说明
1num_pages返回分页之后的总页数
2page_range返回分页后的页码列表

Paginator实例方法

序号方法名说明
has_previous判断当前页是否有前一页
has_next判断当前页是否有下一页
previous_page_number返回前一页的页码
next_page_number返回下一页的页码

Paginator实例属性

序号属性名说明
1number返回当前页的页码
2object_list返回当前页的数据查询集
3paginator返回对应的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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号