当前位置: 首页 > news >正文

聊城做网站最好的网络公司游戏科技

聊城做网站最好的网络公司,游戏科技,vs2012 做网站教程,wordpress 获取当前自定义分类【Django】Task4 序列化及其高级使用、ModelViewSet Task4主要了解序列化及掌握其高级使用#xff0c;了解ModelViewSet的作用#xff0c;ModelViewSet 是 Django REST framework#xff08;DRF#xff09;中的一个视图集类#xff0c;用于快速创建处理模型数据的 API 视…【Django】Task4 序列化及其高级使用、ModelViewSet Task4主要了解序列化及掌握其高级使用了解ModelViewSet的作用ModelViewSet 是 Django REST frameworkDRF中的一个视图集类用于快速创建处理模型数据的 API 视图。 1.Django的序列化 Django 的序列化是指将复杂的数据结构通常是数据库中的模型对象转换为可以在不同应用程序间传输和存储的格式如 JSON、XML 或类似的格式。这使得数据可以在不同系统、平台或前后端之间进行交换和共享。 在 Django 中序列化主要用于处理以下两个场景 数据交换和传输 当您需要在应用程序的不同部分之间传递数据时例如在后端和前端之间或在不同的服务之间您可以将数据序列化为一种通用格式如 JSON。这样数据可以在不同系统之间传输和解析。 API 响应 在开发 Web API 时您通常会需要将数据库中的数据转换为特定的数据格式如 JSON以便客户端可以轻松地消费数据。这就涉及到将 Django 模型对象序列化为 JSON 或其他格式然后将其返回给客户端。 Django 提供了一个内置的序列化框架称为 Django REST frameworkDRF它是一个功能强大的工具用于处理序列化和反序列化。使用 DRF您可以轻松地将 Django 模型转换为 JSON 格式或者从 JSON 格式反序列化回模型对象。 1.1序列化常用到的参数 在 Django REST framework 中进行序列化时常用的一些参数可以用来控制序列化的行为和输出。以下是一些常用的序列化参数 fields 用于指定要序列化的字段列表。您可以选择性地列出要包含在序列化输出中的字段。 exclude 与 fields 相反用于指定不包含在序列化输出中的字段列表。 read_only_fields 用于指定在反序列化从 JSON 到模型对象时不允许更新的字段列表。这些字段只能在创建时指定之后不能更改。 write_only_fields 与 read_only_fields 相反用于指定在序列化从模型对象到 JSON时不包含在输出中的字段列表。这些字段只用于接收输入。 validators 用于指定字段级别的验证器列表这些验证器会在序列化和反序列化过程中执行。 extra_kwargs 允许您为特定字段提供附加参数例如指定自定义验证器或者控制序列化行为。 many 用于指示是否进行批量序列化。如果为 True则序列化器将在序列化多个对象时执行批量操作。 allow_null 用于指示是否允许序列化字段的值为 None默认为 False。 required 用于指示字段是否为必填字段如果为 True则在反序列化时必须提供该字段的值。 default 用于指定字段的默认值在反序列化时如果未提供该字段的值将使用默认值。 source 用于指定要从模型中获取数据的字段名称。如果序列化器的字段名称与模型字段名称不同可以使用该参数来指定模型字段的名称。 label 用于指定字段在序列化输出中的标签用于更友好的展示字段名称。 这只是一些常见的序列化参数Django REST framework 提供了丰富的选项和配置以满足不同的序列化需求。您可以根据具体的情况选择适当的参数来定制您的序列化器。 1.2序列化示例 以下是一个简单的示例说明如何使用 DRF 进行序列化 serializer.py # 定义产品序列化器 from rest_framework.serializers import * from .models import *# 产品分类序列化器 class GoodsCategorySerializer(ModelSerializer):class Meta:model GoodsCategoryfields (name, remark)# 产品序列化器 class GoodsSerializer(ModelSerializer):# 外键字段相关的数据 需要单独序列化category GoodsCategorySerializer()class Meta:model Goods# 序列化单个字段fields (name,)# 序列化多个字段fields (name,number,)# 序列化所有字段fields __all__ 在这个示例中我们定义了名为 GoodsCategorySerializer、GoodsSerializer 的序列化器用于将 GoodsCategory、Goods 模型转换为 JSON 格式。通过 serializers.ModelSerializer 类我们可以很方便地将模型字段映射到序列化器的字段并使用 Meta 类来指定要序列化的模型和字段。 总之Django 的序列化是将复杂的数据转换为通用数据格式的过程用于数据交换、API 响应等场景。Django REST framework 提供了强大的序列化框架使数据的转换和传输变得更加简便。 views.py from django.shortcuts import render from rest_framework.response import Response from .models import * from rest_framework.decorators import api_view from django.shortcuts import get_object_or_404 from rest_framework.views import APIView from .serializer import *class 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)urls.py from django.contrib import admin from django.urls import path from apps.erp_test.views import *urlpatterns [path(admin/, admin.site.urls),path(getgoods/, GetGoods.as_view()), ]1.3序列化单个对象 #获取对象 data Goods.objects.get(id1)​#创建序列化器 sberializer GoodsSerializer(instancedata)​#转换数据 print(serializer.data)​注意点 ​instance​是一个参数用于指定要序列化或反序列化的 Python 对象。具体来说它是一个类实例(Class Instance),通常是指一个从数据库或其他数据源中检索出来的模型实例(Model Instance)。 当我们需要将一个模型实例转换为 JSON 或其他格式时可以使用 Django 的序列化器(Serializer)来实现。 1.4序列化多个对象 data Goods.objects.all() # 获取对象# 创建序列化器many表示序列化多个对象默认为单个 serializer GoodsSerializer(instancedata,manyTrue)print(serializer.data) # 转换数据# 输出 [OrderedDict([(id, 1), (number, 1), (name, 第一个产品), (purchase_price, 100.0), (retail_price, 150.0), (remark, 测试产品)]), OrderedDict([(id, 2), (number, 123), (name, 产品2), (purchase_price, 123.0), (retail_price, 4123.0), (remark, 测试产品2)])] 2.Django的ModelViewSet ModelViewSet 是 Django REST frameworkDRF中的一个视图集类用于快速创建处理模型数据的 API 视图。它提供了一组默认的 CRUD创建、读取、更新、删除操作可以用于操作 Django 模型中的数据。 ModelViewSet 通过将常见的 API 操作封装到一个类中使得编写 API 视图变得更加简洁和方便。它继承自 DRF 中的 GenericAPIView并结合了 ListModelMixin、CreateModelMixin、RetrieveModelMixin、UpdateModelMixin 和 DestroyModelMixin从而提供了一系列用于处理模型数据的默认操作。 2.1ModelViewSet示例 以下是一个使用 ModelViewSet 的简单示例 from rest_framework import viewsets from .models import Book from .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet):queryset Book.objects.all()serializer_class BookSerializer在这个示例中假设有一个名为 Book 的模型和相应的序列化器 BookSerializer。通过创建一个继承自 ModelViewSet 的 BookViewSet 类您可以自动获得以下操作 知识点请求url特点GenericViewSet提供一组通用的视图方法方便实现特定功能ListModelMixinget127.0.0.1:8000/book/提供 list​ 方法用于获取资源列表RetrieveModelMixinget127.0.0.1:8000/book/{1}/提供 retrieve​ 方法用于获取单个资源的详细信息CreateModelMixinpost127.0.0.1:8000/book/提供 create​ 方法用于创建资源UpdateModelMixinput127.0.0.1:8000/book/{1}/提供 update​ 方法用于更新资源DestroyModelMixindetete127.0.0.1:8000/book/{1}/提供 destroy​ 方法用于删除资源自定义get/post127.0.0.1:8000/book/自定义用户自定义方法/函数 这些技术知识点可以配合使用帮助我们快速构建出具有 CRUD 功能的 Web 应用并且遵循了 Django 框架的惯例和最佳实践。它们的应用场景包括博客系统、电商平台、社交网络等各种类型的 Web 应用。通过使用这些技术知识点我们能够提高开发效率减少重复的代码编写工作并且保证代码的一致性和可维护性。 列出所有图书GET 请求将返回所有图书的列表。 创建新图书POST 请求将创建一个新的图书。 获取单个图书GET 请求将返回指定图书的详细信息。 更新图书PUT 或 PATCH 请求将更新指定图书的信息。 删除图书DELETE 请求将删除指定图书。 ModelViewSet 还允许您通过覆盖一些方法来自定义行为例如覆盖 get_queryset() 来定义自己的查询集或者覆盖 perform_create() 来在创建对象时执行自定义操作。 总之ModelViewSet 是 Django REST framework 中的一个有用的工具用于快速创建处理模型数据的 API 视图并且提供了一系列默认操作减少了繁琐的代码编写。 补充上述图书curd中的Book模型和序列化器 定义 Book 模型 from django.db import modelsclass Book(models.Model):title models.CharField(max_length200)author models.CharField(max_length100)publication_date models.DateField()isbn models.CharField(max_length13)def __str__(self):return self.title与 Book 模型对应的序列化器 BookSerializer from rest_framework import serializers from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model Bookfields __all__在这个示例中我们创建了一个名为 Book 的模型其中包含了一些基本的字段如标题、作者、出版日期和 ISBN 号。然后我们创建了一个 BookSerializer使用 serializers.ModelSerializer 类来定义序列化器。在 Meta 类中我们将模型设置为 Book并使用 fields ‘all’ 来指定所有模型字段都会被包含在序列化输出中。 通过这样的设置可以使用 BookSerializer 来序列化和反序列化 Book 模型的数据从而在 API 视图中进行数据的展示和操作。
http://www.w-s-a.com/news/345036/

相关文章:

  • 常德市网站建设网站开发用哪个软件好
  • 网站文章怎么更新时间重庆勘察设计网
  • 外卖网站设计企业网站优化做法
  • 专业的营销型网站制作wordpress版权年份
  • 程序员会搭建非法网站吗怎么把wordpress字去掉
  • 牡丹江营商环境建设监督局网站中国档案网站建设的特点
  • 网站欣赏网站欣赏知名企业网站搭建
  • 书店网站建设可行性分析为大型企业设计网络营销方案
  • 北京教育云平台网站建设中国服装设计网站
  • 网络公司专业做网站豌豆荚app下载
  • 网站建设属于什么岗位济宁网站建设_云科网络
  • wordpress网站监测fwa 网站 欣赏
  • 用jsp做的可运行的网站推广网络
  • 电商网站设计论文wordpress子文件夹建站
  • 临沂网站优化如何如何做公司的网站建设
  • 建设部网站 光纤到户沈阳网页设计兼职
  • 企业网站建设作用宁波企业网站推广效果好
  • wordpress课件站模板做网站的公司 贵阳
  • 低价格网站建设网站建设中的板块名称
  • 青岛网站建设华夏h5链接是什么意思
  • 贸易公司如何做网站百度做的网站一般在什么后台
  • 东莞网站设计方案广州做服装电商拿货的网站
  • 部队网站建设设计dede个人网站模板
  • 个人网站怎么自己备案重庆怎样网站推广
  • 做电影网站挣钱吗重庆网站建设技术托管
  • 网站建设用户登录网站商业授权含义
  • 接做室内效果图的网站wordpress制作上传图片
  • 维护一个网站一年多少钱网站微信登录怎么做的
  • 中国建设银行网站E路护航官网如何在招聘网站上选个好公司做销售
  • 网站开发质量管理招聘网站建设方案