-
数据库-基本操作(基本查询-get&all&count)
答: 模型类.objects. get(查询条件):返回一个模型对象,如果查不到,会报错DoesNotExist。 all():无参数,返回查询到的所有数据。QuerySet count():无参数,返回查询到的结果的数量。
-
数据库-基本操作(条件查询-get&filter&exclude)
答: get(查询条件):返回一个模型对象,如果查不到,会报错。 filter(查询条件):返回根据条件查询到结果数据,返回的是QuerySet。 exclude(查询条件):查询不满足条件的结果数据,返回的是QuerySet。 查询条件的格式: <字段名>__<条件>=值 exact: 判等 contains: 包含 startswith: 开头 endswith: 结尾 isnull: 是否为空 in: 在...范围之内 gt: 大于 lt: 小于 gte: 大于等于 lte: 小于等于
-
数据库-基本操作(条件查询-F对象&Q对象)
答: F对象:用于查询时字段之间的比较 from django.db.models import F Q对象:用户查询时条件之间逻辑关系 与(&) 或(|) 非(~) from django.db.models import Q
-
数据库-基本操作(数据查询-聚合操作&排序)
答: sum(求和) avg(求平均) max(最大) min(最小) count(计数) from django.db.models import Sum, Avg, Max, Min, Count aggregate():聚合操作,返回dict order_by(排序字段):进行排序,返回QuerySet,默认升序,在排序字段之前加-就变成降序。
-
数据库-基本操作(关联查询-查询和对象关联的数据)
答: 查询和对象关联的数据: BookInfo(一类) HeroInfo(多类) 一对多:HeroInfo类中有一个外键关联属性:hbook = models.ForeignKey(BookInfo) 查询和图书对象关联的英雄数据(由一查多): 例子:heros = book.heroinfo_set.all() 一类对象.<多类名小写>_set.all() 查询和英雄关联的图书的数据(由多查一): 例子:book = hero.hbook 多类对象.<关联属性>
class Role(models.Model): """角色模型类""" name = models.CharField(max_length=20, verbose_name='角色名称') class User(models.Model): """用户模型类""" # ... uname = models.CharField(max_length=20, verbose='用户名称') # 外键关联属性 role = models.ForeignKey(Role, on_delete=models.CASCADE, verbose='角色') 角色和英雄之间是一对多的关系。 示例: 1. 查询和admin角色关联的用户的数据 role = Role.objects.get(name='admin') role.user_set.all() 2. 查询和smart用户关联的角色数据 user = User.objects.get(uname='smart') user.role
-
数据库-查询集(特点)
all, filter, exclude, order_by这四个函数返回的都是QuerySet类的对象(查询集),查询集可以像list一样进行操作:遍历,取下标,切片(查询集切片时下标不能为负),QuerySet对象可以继续调用上面所讲的任何查询相关方法。 BookInfo.objects.filter(id__gt=3).order_by('bread') QuerySet对象还有一个方法叫:exists->判断查询集中是否有数据,有返回True,没有返回False 两大特点: 惰性查询:只有在使用查询集中的数据时才会真正发生数据库的查询。 books = BookInfo.objects.all() 数据缓存:使用同一个查询集中的数据,只有第一次使用的时候会查询数据库,然后会将查询的结果保存起来,再使用这个查询集时,使用的是保存起来的数据,不会再去查数据库。
-
Admin管理-基本使用
Django自带Admin站点管理功能。 使用: 1. 语言和时区的本地化 2. 创建管理员用户 python manage.py createsuperuser 3. 注册模型类 在子应用admin.py文件中注册模型类 admin.site.register(<模型类>)
-
Admin管理-自定义Admin站点管理页面
自定义Admin站点管理页面: 1. 定义模型Admin管理类 class BookInfoAdmin(admin.ModelAdmin): # Django提供了很多类属性,通过对应的属性就可以控制管理界面对应内容的展示 pass 2. 注册模型类时将模型类和Admin管理类对应起来 admin.site.register(BookInfo, BookInfoAdmin)
-
Admin管理-列表页和编辑页相关控制属性
列表页: list_display = ['模型字段', '模型方法'] list_per_page list_filter search_fields 编辑页: fields fieldsets 图书编辑页面嵌入关联英雄的数据:表格 块
-
Admin管理-站点标题设置
-
Admin管理-上传图片
答: Django框架默认将Admin站点上传的图片保存在服务器本地。 1)设置配置项`MEDIA_ROOT`指定上传文件的保存目录 2)定义模型类的时候,图片字段使用ImageField,并完成迁移 3)在Admin站点注册模型类,就可以通过Admin站点上传图片 Django框架会将Admin站点上传的图片保存在服务器本地的MEDIA_ROOT目录下,同时将上传图片的相对路径保存到表的image字段中。
-
DRF框架-课程内容说明
答: Django Rest FrameWork: 1. web开发的两种模式:前后端不分离和前后端分离 2. RestFul API接口设计风格:前后端分离被广泛采用 3. 使用Django基础自定义Rest API接口 4. DRF框架:提高开发Rest API接口的效率 4.1 序列化器(重点) 4.2 类视图和扩展类(重点:2个基类,5个扩展类,9个子类视图) 4.3 视图集 4.4 其他功能(认证&权限&限流&过滤&排序&分页&异常处理)
-
DRF框架-web开发的两种模式
答: 前后端不分离:前端看到的效果是由后端进行控制的。 缺点:只适用于纯网页的应用。 优点:有利于网站的SEO(搜索引擎优化)优化。 前后端分离:后端只返回前端所需的数据,至于数据怎么进行展示,由前端自己进行控制。 优点:可以对接不同类型的客户端。 缺点:不利于网站的SEO(搜索引擎优化)优化。
-
DRF框架-RestFul API接口设计风格介绍
统一接口设计风格: 1. URL地址尽量使用名词,不要出现动词。 2. 使用不同的请求方式,代表要执行的不同的操作。 GET(获取) POST(新增) PUT(修改): PUT /books/1/ PATCH /books/1/ DELETE(删除) 3. 访问URL地址时,如果有一些过滤参数,参数可以放到查询字符串中 GET /books/?page=<页码> 4. 响应数据&响应状态码 GET /books/:返回所有的图书数据 GET /books/1/:返回id为1的图书数据 POST /books/:将新增的图书数据返回 PUT /books/1/:将修改的图书数据返回 DELETE /books/1/:返回空文档 获取|修改:200 新增:201 删除:204 参数有误:400 服务器出错:500 5. 响应数据的格式:json 了解: 1. 域名:专有域名 2. 版本:将版本信息放在url地址 3. 错误:将错误信息返回 4. 在访问一个API接口时,将和接口相关的其他API接口的地址也在响应数据中返回。
-
DRF框架-Django自定义RestAPI接口
需求: 设计一套符合RestAPI风格的接口,提供以下5个接口: 1. 获取所有图书数据:GET /books/ 2. 新增一本图书数据:POST /books/ 3. 获取指定的图书数据(根据id):GET /books/(?P<pk>\d+)/ 4. 修改指定的图书数据(根据id):PUT /books/(?P<pk>\d+)/ 5. 删除指定的图书数据(根据id):DELETE /books/(?P<pk>\d+)/