1、QuerySet 和 Instance
1.1 QuerySet 数据类型
在Django中,QuerySet是一个包含数据库查询结果的对象集合。它是由 Model.objects 方法返回的,并且可以用于生成数据库中所有满足一定条件的对象的列表。
QuerySet可以通过多种方式获取,常见的方法包括:
Model.objects.all() | 获取表中的所有数据 |
Model.objects.filter() | 根据指定条件过滤数据 |
Model.objects.get() | 获取满足指定条件的单个对象 |
delete() | 删除符合条件的所有对象 |
update() | 将符合条件的所有对象的某个字段值进行更新 |
create() | 用于创建并保存一个新的对象 |
count() | 返回符合条件的对象数量 |
order_by() | 对返回的对象进行排序,默认为升序,降序在字段名前面加负号 |
1.2 Instance 数据类型
Instance是QuerySet中的单个对象实例。它代表数据库表中的一行数据,并提供了对该行数据的操作方法。Instance 用于创建、更新或者删除单个模型实例。
Instance具有与数据库表中的字段相对应的属性,可以使用这些属性来访问和修改数据库中的数据。例如,如果有一个名为"Student"的模型,并具有"name"和"age"字段,则可以通过Instance.name和Instance.age来访问和修改学生的姓名和年龄。
Instance的常见用法:
创建一个对象 | `Obj = Model(attr1=val1, attr2=val2)`,`Obj.save()` |
更新一个对象 | `Obj = Model.objects.get(id=xxx)`,`Obj.attr1 = val1`,`Obj.save()` |
删除一个对象 | `Obj = Model.objects.get(id=xxx)`,`Obj.delete()` |
1.3 QuerySet和Instance的不同
QuerySet 适用于需要查找多个对象或进行聚合操作的场景,而 Instance 适用于单独对象的创建、修改和删除操作。
2、APIView 和 as_view
2.1 APIView 和 as_view 的区别
APIView是Django Rest Framework(DRF)提供的视图类,用于处理API请求和响应。提供了一些用于处理HTTP方法(如GET、POST、PUT、DELETE等)的函数,以及一些帮助函数和属性,旨在提供一个易于使用且灵活的方式来构建 API 视图。。
as_view是APIView的一个方法,用于将APIView类转换为可调用的函数。它返回一个可以处理请求的可调用对象,这样我们可以像处理普通函数视图一样处理APIView。
2.2 使用APIView的as_view方法
使用APIView的as_view方法可以将APIView类转换为可调用的函数,从而方便地将其用作Django的URL配置。
要使用APIView的as_view方法,需要按照以下步骤进行操作:
创建一个继承自APIView的自定义视图类,该类定义了处理API请求的方法(如GET、POST、PUT、DELETE等)。
在urls.py文件中导入自定义视图类和as_view方法。
将自定义视图类与特定的URL路径进行关联,使用as_view()方法将其转换为可调用的函数。