福建省品牌建设促进会网站wordpress 安全加固
web/
2025/10/4 1:23:22/
文章来源:
福建省品牌建设促进会网站,wordpress 安全加固,最常见企业网站公司有哪些,免费h5网站模版1. DRF QuerySet 和 Instance功能概述
1.1 QuerySet
从数据库中查询结果存放的集合称为 QuerySet。 Django ORM用到三个类#xff1a;Manager、QuerySet、Model。每个Model都有一个默认的 manager实例#xff0c;名为objects。Django的ORM通过Mode的objects属性提供各种数据…1. DRF QuerySet 和 Instance功能概述
1.1 QuerySet
从数据库中查询结果存放的集合称为 QuerySet。 Django ORM用到三个类Manager、QuerySet、Model。每个Model都有一个默认的 manager实例名为objects。Django的ORM通过Mode的objects属性提供各种数据操的接口API并通过 Model.objects 方法返回QuerySet生产符合查询条件的列表列表中包含多个 Instance。 在Django中QuerySet是一个与数据库交互的高级抽象层它用于执行数据库查询操作和操作数据库表中的数据。QuerySet是Django的ORMObject-Relational Mapping系统的一部分它允许你通过Python代码而不是SQL语句来查询和操作数据库。
class QuerySet(modelNone, queryNone, usingNone)[source]
其具有两大特色1 惰性若这个对象中包含了需要的数据且需要使用时它会去DB中获取数据否则不会获取。 比如说在内部创建、过滤、切片和传递一个QuerySet而没有进行真正的数据执行不会真实操作数据库被称为惰性。2缓存使用同一个查询集第一次使用时会发生数据库的查询然后Django会把结果缓存下来再次使用这个查询集时会使用缓存的数据减少了数据库的查询次数。
1.2 操作说明
设定已存在数据表定义如下
class Goods(DjangoPeople):
{
number CharField(max_length32, verbose_name‘编号’)
name CharField(max_length64, verbose_name‘名称’)
unit CharField(max_length64, verbose_name‘单位’)
remark CharField(max_length256, verbose_name‘备注’)
}
* all() :返回模型的所有对象它的效果等价于不带任何条件的 filter() 方法。如 DjangoPeople.objects.all() # 查询所有 语句。* filter()(**kwargs) 用于返回符合条件的所有数据。如DjangoPeople.objects.filter(name“abc”) #取出namex的DjangoPeople成员又如DjangoPeople.objects.filter(name“x”) .filter(unit“y”) #取出namex且unity的DjangoPeople成员get() 方法与 filter() 的作用类似用于返回符合条件的单个对象但是可能会返回多个值
delete() 可以删除符合条件的所有对象
如catagories_to_deleteDjangoPeople.objects.filter(name“abc”) deleted_count categories_to_delete.delete()
update() 将符合条件的所有对象的某个字段值进行更新
create() 是 save() 方法的快捷方式用于创建并保存一个新的对象。
如created_category DjangoPeople.objects.create(name“abc”)
count() 返回符合条件的对象数量
order_by() 对返回的对象进行排序默认为升序。降序则在字段名前面加负号。
查询数据你可以使用QuerySet来查询数据库中的数据。例如你可以执行filter()、get()、exclude()等方法以获取匹配特定条件的数据库记录。
链式查询QuerySet支持链式查询这意味着你可以在查询中多次使用不同的方法以便筛选和排序数据。这使得构建复杂的查询非常容易。
延迟执行QuerySet使用延迟执行的机制它并不立即执行数据库查询而是在需要数据时才执行。这有助于优化查询减少不必要的数据库访问。
更新和删除数据你可以使用update()方法来更新QuerySet中的数据或者使用delete()方法删除匹配条件的数据。
聚合和统计QuerySet支持对查询结果进行聚合和统计操作如计数、求和、平均值等。
序列化数据你可以将QuerySet中的数据序列化为JSON或其他格式以便在API或前端应用程序中使用。
使用模型类QuerySet是与Django模型类相关联的它与模型类一起工作允许你以面向对象的方式处理数据库数据。
QuerySet其他的其接口定义用法类似这里不再一一赘述需要运用可查阅Django官网。 1.3 Instance功能
Instance指的是一个 Django 模型的单个实例也就是数据库中的一行数据。相比于 QuerySet查询集合它是针对单个对象的操作用于创建、更新或者删除单个模型实例。 创建一个对象Obj Model(attr1val1, attr2val2)Obj.save() 更新一个对象Obj Model.objects.get(idxxx)Obj.attr1 val1Obj.save() 删除一个对象Obj Model.objects.get(idxxx)Obj.delete()
QuerySet 适用于需要查找多个对象或进行聚合操作的场景而 Instance 适用于单独对象的创建、修改和删除操作。 2. Django APIView
2.1 Teaching Order
APIView 的概念
APIview 是 Django REST Framework 提供的一个视图类。它和 Django 中的 view 类有些相似但是又有一些不同之处。APIview 可以处理基于 HTTP 协议的请求并返回基于内容协商的响应它旨在提供一个易于使用且灵活的方式来构建 API 视图。
view.py
# 面向对象编程
from django.shortcuts import render
from rest_framework.decorators import api_view
from .models import *
from rest_framework.response import Response
from rest_framework.views import APIView
#### APIViewclass GetGoods(APIView):def get(self, request):data Goods.objects.all()serializer GoodsSerializer(instancedata, manyTrue)print(serializer.data)return Response(serializer.data)def post(self, request):# 从请求数据中提取字段request_data {category: request.data.get(Goodscategory),number: request.data.get(number),name: request.data.get(name),barcode: request.data.get(barcode),spec: request.data.get(spec),shelf_life_days: request.data.get(shelf_life_days),purchase_price: request.data.get(purchase_price),retail_price: request.data.get(retail_price),remark: request.data.get(remark),}# 使用 create() 方法创建新的商品对象new_goods Goods.objects.create(**request_data)# 对创建的对象进行序列化并作为响应返回serializer GoodsSerializer(instancenew_goods)return Response(serializer.data)# 面向对象编程class FilterGoodsCategoryAPI(APIView):# request 表示当前的请求对象# self 表示当前实例对象def get(self, request, formatNone):print(request.method)return Response(ok)def post(self, request, formatNone):print(request.method)return Response(ok)def put(self, request, formatNone):print(request.method)return Response(ok)url.py
from apps.erp_test.views import *urlpatterns [path(admin/, admin.site.urls),path(filtergoodscategoryapi/, FilterGoodsCategoryAPI.as_view()),path(getgoods/, GetGoods.as_view()),
]首先self 表示当前实例对象这里指的是视图类的实例对象。
request 表示当前的请求对象包含了客户端发送的信息例如请求头、请求体等。
pk 是 path 参数 int:pk用于获取请求中的产品 ID。
format 表示客户端请求的响应格式例如 JSON、XML 等。这个参数通常不需要指定会根据客户端发送的 Accept 请求头来自动选择响应格式。如果客户端指定了响应格式那么我们可以从请求中获取到这个参数并且做出相应的处理。
在这个方法中我们需要通过 pk 参数获取到对应的产品数据并将其序列化成 JSON 格式并返回给客户端。具体的实现方式可以参考序列化器文档和 Django ORM 文档。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86527.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!