什么是MVC?
低耦合,高内聚:模块与模块之间不能有太强依赖
高可扩展性:对以后的不可期问题作出支持,向后兼容
解耦
三个部分:1、面向操作数据库 2、接收请求处理 3、结果的呈现
Django默认使用SQLite数据库
Modle View Control
开发流程:
虚拟环境:workon,mkvirtualenv,revirtualenv,deactivate
项目的入口:
manage.py
项目的配置:自建的底层(项目名)
django-admin startproject 项目名
创建应用:
python manage.py startapp 应用名
编写模型类:
继承models.Model
当输出对象时,会调用对象的str方法
生成数据表:激活模型:编辑
settings.py文件,将
应用名应用加入到installed_apps中
生成迁移文件:根据模型类生成sql语句 python manage.py makemigrations
执行迁移:执行sql语句生成数据表
python manage.py migrate
进入shell测试数据:
python manage.py shell
管理操作:
开启服务器:
python manage.py runserver ip:port 可以不写ip,默认端口为8000
默认端口是8000,可以修改端口
python manage.py runserver 8080
创建一个管理员用户:python manage.py createsuperuser,按提示输入用户名、邮箱、密码
向admin注册应用名的模型:打开应用名/admin.py文件,注册模型:
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
查询集:
惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库
返回查询集的方法,称为过滤器
* all()
* filter()
* exclude()
* order_by()
* values():一个对象构成一个字典,然后构成一个列表返回
返回单个值的方法
* get():返回单个满足条件的对象
* 如果未找到会引发"模型类.DoesNotExist"异常
* 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常
* count():返回当前查询的总条数
* first():返回第一个对象
* last():返回最后一个对象
* exists():判断查询集中是否有数据,如果有则返回True
字段查询:
查询filter(属性__比较符=值)
F对象
* 可以使用模型的字段A与字段B进行比较,如果A写在了等号的左边,则B出现在等号的右边,需要通过F对象构造
list.filter(bread__gte=F('bcommet'))
* django支持对F()对象使用算数运算
list.filter(bread__gte=F('bcommet') * 2)
* F()对象中还可以写作“模型类__列名”进行关联查询
list.filter(isDelete=F('heroinfo__isDelete'))
Q对象
* 过滤器的方法中关键字参数查询,会合并为And进行
* 需要进行or查询,使用Q()对象
* Q对象(django.db.models.Q)用于封装一组关键字参数,这些关键字参数与“比较运算符”中的相同
from django.db.models import Q
list.filter(Q(pk_ _lt=6))
* Q对象可以使用&(and)、|(or)操作符组合起来
* 当操作符应用在两个Q对象时,会产生一个新的Q对象
list.filter(pk_ _lt=6).filter(bcommet_ _gt=10)
list.filter(Q(pk_ _lt=6) | Q(bcommet_ _gt=10))
* 使用~(not)操作符在Q对象前表示取反
list.filter(~Q(pk__lt=6))