博客
关于我
DRF类视图让你的代码DRY起来
阅读量:421 次
发布时间:2019-03-06

本文共 1221 字,大约阅读时间需要 4 分钟。

DRF(Django REST framework)提供了强大的工具来构建API,尤其是通过类视图和mixins来简化代码。以下是如何优化代码的分步说明:

  • 导入必要的类

    • snippets.models导入Snippet模型。
    • snippets.serializers导入SnippetSerializer
    • rest_framework导入必要的类,如generics下的GenericAPIViewmixins下的RetrieveModelMixin等。
  • 创建类视图

    • SnippetsList:继承自ListCreateAPIView,自动支持列表和创建操作。

      from rest_framework import genericsclass SnippetList(generics.ListCreateAPIView):    queryset = Snippet.objects.all()    serializer_class = SnippetSerializer
    • SnippetsDetail:继承自RetrieveUpdateDestroyAPIView,自动支持读取、更新和删除操作。

      class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):    queryset = Snippet.objects.all()    serializer_class = SnippetSerializer
  • 使用URL路由

    • snippets/urls.py中,更新路由配置。
      from django.urls import pathfrom rest_framework.urlpatterns import format_suffix_patternsurlpatterns = [    path('snippets/', views.SnippetList.as_view()),    path('snippets/
      /', views.SnippetDetail.as_view()),]urlpatterns = format_suffix_patterns(urlpatterns)
  • 理解DRF的工作原理

    • 类视图:通过继承APIView及其子类,定义HTTP方法处理逻辑。
    • mixins:提供常用操作,如ListModelMixin支持列表,CreateModelMixin支持创建,简化代码。
    • Generics:提供通用API类,减少重复代码,提升可维护性。
  • 优化代码结构

    • 每个类视图只需定义querysetserializer_class,DRF处理其余逻辑。
    • 使用as_view()将类视图转换为可调用的函数,适用于路由配置。
  • 通过以上步骤,代码变得简洁高效,易于维护,充分发挥DRF的优势。

    转载地址:http://luyuz.baihongyu.com/

    你可能感兴趣的文章
    pandas 数据框将列类型转换为字符串或分类
    查看>>
    pandas 数据框条件 .mean() 取决于特定列中的值
    查看>>
    pandas 数据框至海运分组条形图
    查看>>
    pandas 时序统计的高级用法!
    查看>>
    pandas 时间序列重新采样结束给定的一天
    查看>>
    pandas 根据不是常量的第三列的值将值从一列复制到另一列
    查看>>
    pandas 根据值从多列中的一列查找
    查看>>
    Pandas 根据布尔条件选择行和列
    查看>>
    pandas 滚动窗口 - datetime64[ns] 未实现
    查看>>
    pandas 版本兼容特定的蟒蛇和NumPy配置吗?
    查看>>
    pandas 生成excel多级表头
    查看>>
    Pandas 的 DataFrame 详解-ChatGPT4o作答
    查看>>
    pandas 读取excel数据,以字典形式输出
    查看>>
    Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
    查看>>
    pandas 适用,但仅适用于满足条件的行
    查看>>
    pandas 重新采样到每月的特定工作日
    查看>>
    pandas :我如何对堆叠的条形图进行分组?
    查看>>
    pandas :按移位分组和累加和(GroupBy Shift And Cumulative Sum)
    查看>>
    pandas :检测一个DF和另一个DF之间缺失的列
    查看>>
    Pandas-从具有嵌套列表列表的现有列创建动态列时出错
    查看>>