1. django(MVT)开发基本流程
- 视图views: 接受请求,逻辑处理, 调用数据,输出响应
- 配置urls: 在相应的应用(app)中配置url(正则表达式,视图的名称)
- 模型models(django内部): 负责数据库交互, 模型对象,列表
- 定义模型(model.py)类: 指定属性和类型, 以确定表的结构, 执行迁移,生成迁移文件
- 后台管理(djang内部): 创建管理员, 启动服务器, 在admin.py中完成模型类注册
- 模板templates: 定义显示的样式, 加载(读取文件内容到内存);渲染页面
2. 模型(model)
2.1. 需要理解ORM(Object Relational Mapping,即对象-关系-映射)
2.2. 配置数据库(django支持当前主流关系型数据库, 本次以MySQL为例), 需要提前在mysql中创建数据库
2 . 2. 1创建数据库
- mysql -uroot -p 登录数据库
- create database test1 charset=utf8; 创建test1数据库
- use test1; 切换到test1数据库
- show tables; 查看有几张表(因为是新建所以为空)
2. 2. 1配置数据库
- 在settings.py文件中DATABASES列表中进行相关配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'NAME': 'test1', # 数据库名称
'USER': 'root', # 登录mysql时的用户名
'PASSWORD': '.....', # 你自己的登录密码
'HOST': 'localhost', # 数据库服务器ip地址(本机localhost或者127.0.0.1均可)
'PORT': 3306, # 端口3306
}
}
2.3 创建应用python manege.py startapp 应用名称, 并将应用添加到settings.py文件的 install_apps 列表中
3 模型中的具体字段类型,参考django官方文档: https://docs.djangoproject.com/en/2.2/ref/models/fields/
4 模型成员(管理器是模型类的属性)
- 自定义管理器, 在models.py文件中创建一个xxxManager(models.Models): 类
- 自定义管理器作用(用于将对象与数据表映射): 1.更改默认查询集的结果;2.定义模型类的创建方法; 代码如下:
class BookInfoManager(models.Manager):
'''自定义管理器:和数据库做交互'''
def get_queryset(self):
return super(BookInfoManager, self).get_queryset().filter(
isDelete=False
) # 删选删除的结果(自定义管理器)
def create(cls, btitle, bpud_date):
'''自定义创建模型类方法'''
b = BookInfo()
b.btitle = btitle
b.bpub_date = bpud_date
b.bcomment = 0
b.bread = 0
b.isDelete = False
return b
5 查询
1 查询集
- 1 惰性执行: 创建查询集不会带来任何数据库的访问, 直到调用数据时, 才会访问数据库
1.2 查询集的方法:成为过滤器; 分别有all(), filter(), exclude(), order_by(), values()
2 字段查询:(比较运算符,F对象,Q对象)
网友评论