【Web应用程序设计——Django学期项目总结】

文章目录

(一)Django环境搭建

1.cmd下安装Django

pip install django

2.查看django详细信息

pip show Django

3.验证django安装是否正确

python
import Django
Django.get_version()

4.查询Django版本,检查是否正确安装,窗口输出版本号则正确

python -m django --version

(二)创建Django项目

1.在根目录创建django_demo

django-admin startproject django_demo

2.创建Django项目的App

cd django_demo
django-admin startapp first_app

3.命令行启动Django项目

python manage.py runserver
http://127.0.0.1:8000/(浏览器访问该web应用)

(三)配置Django的数据库连接

1.新建数据库

在这里插入图片描述

2.MySQL数据库配置

在这里插入图片描述
‘ENGINE’:数据库引擎名称
‘NAME’:数据库的名称
‘USER’:连接数据库的用户名
‘PASSWORD’:连接数据库的密码
‘HOST’:数据库的ip地址
‘PORT’:数据库对应开放的端口号

(四)数据迁移命令

1.安装mysqlcient

pip install mysqlclient

2.执行命令makemigrations

在pycharm的项目中,启动终端,执行以下命令:
python manage.py makemigrations

3.执行命令migrate

python manage.py migrate

(五)Shell方式添加数据

通过shell交互式命令快速掌握DJango为数据库添加数据的方式。
在这里插入图片描述

1.使用save()添加数据

方法一
在pycharm终端下先执行以下命令,进入shell操作界面
python manage.py shell

从books.models中引入Type模型类
from books.models import Type

实例化Type类,生成一个Type类的对象t
t = Type(first='文学',second='小说')

调用对象t的save()方法,把t携带的数据保存到数据库表books_type中
t.save()
方法二
from books.models import Type
t = Type()
t.first = '文学'
t.second = '诗词'
t.save()

2.使用create()添加数据

方法一
from books.models import Type
t = Type.objects.create(first='文学',second='戏剧')
t.id
方法二
from books.models import Type
d = dict(first='文学',second='散文')
t = Type.objects.create(**d)
t.id

数据记录
在这里插入图片描述

3.使用get_or_create()添加数据

from books.models import Type
d=dict(first='哲学',second='逻辑学')
t=Type.objects.get_or_create(**d)
t[0].id
t=Type.objects.get_or_create(**d)
t[0].id

4.使用update_or_create()更新或添加数据

from books.models import Type
d=dict(first='哲学',second='论理学')
t= Type.update_or_create(**)
t
t= Type.update_or_create(**)
t
t= Type.objects.update_or_create(**d,defaults={'second':'美学'})
t
t[0].second

5.使用bulk_create()批量添加数据

from books.models import Type
t1=Type(first='哲学',second='认识论')
t2=Type(first='哲学',second='形而上学')
obj_list = [t1,t2]
Type.objects.bulk_create(obj_list)

(六)Shell方式更新和删除图书数据

在这里插入图片描述

1.使用get()+save()更新数据

引入模型Type
from books.models import Type

查询id为1的模型对象
t= Type.objects.get(id=1)

突出模型字段的值
print(t.id,t.first,t.second)

修改模型字段second的值为“歌剧”
t.second = '歌剧'

保存修改的结果
t.save()

2.使用update()更新全部数据

from books.models import Type
Type.objects.update(second='小说')

3.使用filter()+update()更新符合条件的数据

from books.models import Type

更新id为1的模型对象,把字段值second修改为“小说”
Type.objects.filter(id=1).update(second='小说')

实例化1个字典,key为second,value为“诗歌”
d = dict(second='诗歌')

更新id为1的模型对象,把字段值second修改为“诗歌”,使用字典做update的参数
Type.objects.filter(id=1).update(**d)

4.使用内置F方法实现数据的自增或自减

from books.models import Type
from django.db.models import F
t = Type.objects.filter(id=1)
t.update(id=F('id')+10)
注意:修改后的id值不应该与其他记录的id值重复,否则会报主键重复错误。

5.使用bulk_update()批量更新数据

from books.models import Type
t1= Type.objects.filter(id=2)
t2=Type.objects.get(id=3)
t1.second = '诗歌'
t2.first= '工具书'
Type.objects.bulk_update([t1,t2],fields=['second','first'])

6.使用all()+delete()删除全部数据

from books.models import Type
Type.objects.all().delete()

7.使用get()+delete()删除1条数据

from books.models import Type
Type.objects.get(id=2).delete()

8.使用filter()+delete()删除一批数据

from books.models import Type
Type.objects.filter(first='哲学').delete()

9.删除模型PersonInfo中的数据

python manage.py makemigrations
PersonInfo.objects.get(id=1).delete()

(七)Shell方式查询图书数据

在这里插入图片描述

1.测试数据准备在这里插入图片描述

2.all()查询所有数据

from books.models import PersonInfo,Vocation
v = Vocation.objects.all()
v

3.使用切片查询指定条数的记录

from books.models importVocation
v = Vocation.objects.all()[:3]
v

4.使用values()查询指定字段

from books.models importVocation
v = Vocation.objects.values('job')
v

5.使用values_list()查询指定字段

from books.models importVocation
v = Vocation.objects.values_list('job')
v = Vocation.objects.values_list('job')[:3]
v

6.使用get()查询数据

from books.models importVocation
v= Vocation.objects.get(id=5)
v

7.使用filter()查询数据

from books.models importVocation
v=
Vocation.objects.filter(id=5)
v

8.使用filter()多条件查询数据

from books.models importVocation
v= Vocation.objects.filter(job='软件工程师',payment=15000)
v

9.在filter()查询条件中使用字典参数

from books.models importVocation
d ={"job":"软件工程师","payment":15000}
v= Vocation.objects.filter(**d)
v
d = dict(job="软件工程师",payment=15000)
v= Vocation.objects.filter(**d)
v

10.在filter()中使用Q函数进行or查询

from django.db.models import Q
from books.models importVocation
v= Vocation.objects.filter(Q(job='软件工程师')|Q(job='项目经理'))
v

11.不等于查询“~”

from django.db.models import Q
from books.models importVocation
v=
Vocation.objects.filter(~Q(job='软件工程师'))
v

12.不等于查询exclude()

from django.db.models import Q
from books.models importVocation
v= Vocation.objects.exclude(job='软件工程师')
v

13.使用count()查询数据量

from books.models importVocation
v= Vocation.objects.all().count()
v

14.使用distinct()去重

from books.models importVocation
v=
Vocation.objects.values('job').filter(job='网站设计师')
v
v= Vocation.objects.values('job').filter(job='网站设计师').distinct()
v

15.字段排序order_by()

from books.models importVocation
v = Vocation.objects.all().order_by('id')
v

子任务1 聚合查询求和及求平均数

1.annotation()+sum()求和
2.并集union()操作
3.交集intersection()操作
4.difference()去除共同数据操作

子任务2 查询条件匹配符的使用

get()和filter()的差异:

get():
查询的字段必须是主键或者唯一约束的字段,并且查询的数据必须存在,如果查询的字段有重复值或者查询的数据不存在,程序会抛出异常信息。
filter():
查询字段没有限制,只要该字段是数据表的某一字段即可。查询结果以列表形式返回,如果查询结果为空,就返回空列表。

子任务3 两表关联查询(1:1和1:N)

1.正向查询,查询条件在查询对象中
2.反向查询,查询条件在查询对象中
3.正向查询,查询条件不在查询对象中
4.反向查询,查询条件不在查询对象中
5.使用select_related()查询

子任务4 三表关联查询(两个1:N)

1.模型定义
2.数据迁移
3.准备测试数据
4.三表关联查询

子任务5 多对多查询

1.模型定义
2.数据迁移
3.数据准备
4.多对多关联查询prefetch_related()

子任务6 原生SQL查询

1.extra查询
2.raw查询
3.execute查询

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值