Django的创建命令
找到文件所在位置---cmd
workon django 回车
django-admin startproject 项目名称
Model的作用
—操作数据库
View的作用
处理逻辑
Model如何来使用
建立表结构------->创建模型类
数据库生成表-------->迁移模型类
表的数据操作-------->增删改查(CURD)
迁移的时候,成功的标志是什么?
在migrations文件夹里面会出现对应的文件
数据库的查询
1.基本查询
students.objects().get(name = ‘张三’) #查询单条,即获取name为张三的学生的信息,如果不存在则报错
students.objects().all() #获取表中所有的数据
students.objects().all().values('name') #获取到所有的表中的姓名,返回一个字典组成的列表[{‘name’:‘张三’},{‘name’:‘李四’},......]
students.objects().filter(name = ‘张三’).values('id') #只返回名为张三的学生的id,不返回其他属性了。
students.objects().get(name='张三').count() #查询结果的数量
students.objects().exclude(name='张三') #查询所有不包括名为张三的学生的数据
2.模糊查询
contains 包含
Book.objects.filter(title__contains="python") # 查询结果包含“python”的
startswith 以…开头
Book.objects.filter(title__startswith="py") # 查询以“py”开头的
endswith 以…结尾
Book.objects.filter(title__endswith="aa") # 查询以“aa”结尾的
3.空查询
User.objects.filter(username__isnull=True) # 查询用户名为空的用户
User.objects.filter(username__isnull=False) # 查询用户名不为空的用户
4.范围查询
in 在.....范围内
BookInfo.objects.filter(id__in = [1,3,5]) # 查询id为1或3或5的图书
5.比较查询
gt 大于>
gte 大于等于>=
lt 小于
lte 小于等于
exclude 不等于
Student.objects.filter(age__gt=10) # 查询年龄大于10岁的学生
Student.objects.filter(age__gte=10) # 查询年龄大于等于10岁的学生
Student.objects.filter(age__lt=10) # 查询年龄小于10岁的学生
Student.objects.filter(age__lte=10) # 查询年龄小于等于10岁的学生
Student.objects.filter().excute(age=10) # 查询年龄不为10的学生
Student.objects.filter().excute(age__in=[10, 20]) # 查询年龄不在 [10, 20] 的学生
BookInfo.objects.exclude(id=3) # 查询id不为3的图书信息。
User.objects.filter().excute(age=10) # 查询年龄不为10的用户
User.objects.filter().excute(age__in=[10, 20]) #查询年龄不为在 [10, 20] 的用户
6.F查询和Q查询
导包:
from django.db.models import F、Q
# F对象主要用于模型类的 A 字段属性与 B 字段属性两者的比较
Book.objects.all().update(i_price=F('i_price')+20) #获取该列所有值并加20
# Q 对象相比 F 对象更加复杂一点,它主要应用于包含逻辑运算的复杂查询。与(&) 或( | ) 非(~)
Book.objects.filter(Q(i_price__lt=35)|Q(pub_id='2')) #查找不是价格低于45的书或c语言中文出版的书
7.聚合函数
在Django中,聚合函数都是在django.db.models模块下的,具体的聚合函数有Avg(平均)、Count(数量)、Max(最大)、Min(最小)、Sum(求和)
result = Author.objects.aggregate(Avg('age')) # 计算所有作者的平均年龄
8.排序:order_by
BookInfo.objects.all().order_by('id') #查询所有图书的信息,按照id从小到大进行排序。
BookInfo.objects.all().order_by('-id') #查询所有图书的信息,按照id从大到小进行排序。
BookInfo.objects.filter(id__gt=3).order_by('-bread') #把id大于3的图书信息按阅读量从大到小排序显示。
9.关联查询
(多表连接查询)
class A(models.Model):
name = models.CharField(u'名称')
class B(models.Model):
aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')
# 查询B表中外键aa所对应的表中字段name包含searchtitle的B表对象。
view的使用
- 获取view里request的请求参数
获取get
。request.GET.get()
获取form-data
。request.POST.get()
获取json
。data = request.body
。json.loads(data)
- 返回请求的数据
返回json
。JsonResponse
返回字符串
。HTTPResponse
序列化
for i in 查询结果集:
数据=i.字段名