https://ciang.top/ https://ciang.top/
首页
  • 首页
  • python
  • 工具经验
  • 教程
  • c++
  • mysql
  • 登录
搜索历史 清空
写文章

登录

账号密码登录
扫码登录
扫码登录
请使用手机扫码登录
注册登录即表示同意用户协议和隐私政策
编程
java c/c++ mysql python excel html/css/js 工具经验
思路/心得
传奇私服-V8M2引擎学习笔记
教程
翻译
游戏
推荐 最新
django之DRF的views.py实现方式概览
benojan 2025-1-31

django之DRF的views.py实现方式概览

Django 的视图实现方式主要有两种:FBA(Function-Based Views,函数视图) 和 CBA(Class-Based Views,类视图)。 而在 Django REST Framework(DRF)中,视图的实现方式更加丰富和灵活,主要包括以下几种: 1. Django 的视图实现方式 (1) FBA(Function-Based Views) 函数视图是基于函数的视图,适合简单的逻辑处理。 from django.http import HttpResponse def my_view(request): if request.method == 'GET': return HttpResponse('Hello, GET request!') elif request.method == 'POST': return HttpResponse('Hello, POST request!') (2) CBA(Class-Based Views) 类视图是基于类的视图,适合复杂的逻辑处理,支持代码复用和扩展。 from django.views import View from django.http import HttpResponse class MyView(View): def get(self, request): return HttpResponse('Hello, GET request!') def post(self, request): return HttpResponse('Hello, POST request!') 2. DRF 的视图实现方式 DRF 在 Django 的基础上提供了更强大的视图实现方式,主要用于构建 RESTful API。以下是 DRF 中常见的视图实现方式: (1) APIView APIView 是 DRF 中最基础的类视图,类似于 Django 的 View,但提供了更多的功能(如请求解析、响应渲染、异常处理等)。 from rest_framework.views import APIView from rest_framework.response import Response class MyAPIView(APIView): def get(self, request): return Response({'message': 'Hello, GET request!'}) def post(self, request): return Response({'message': 'Hello, POST request!'}) (2) GenericAPIView GenericAPIView 是 APIView 的扩展,提供了更多的通用功能(如获取单个对象、获取对象列表等),通常与 Mixin 类一起使用。 from rest_framework.generics import GenericAPIView from rest_framework.mixins import ListModelMixin, RetrieveModelMixin from .models import MyModel from .serializers import MyModelSerializer class MyGenericView(ListModelMixin, RetrieveModelMixin, GenericAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) (3) ViewSet ViewSet 是 DRF 中更高级的视图实现方式,它将多个视图逻辑(如列表、详情、创建、更新、删除等)组合到一个类中。ViewSet 通常与路由器(Router)一起使用,自动生成 URL 配置。 ModelViewSet ModelViewSet 是 ViewSet 的子类,提供了完整的 CRUD 操作。 from rest_framework.viewsets import ModelViewSet from .models import MyModel from .serializers import MyModelSerializer class MyModelViewSet(ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer ReadOnlyModelViewSet ReadOnlyModelViewSet 是 ModelViewSet 的子类,只提供只读操作(列表和详情)。 from rest_framework.viewsets import ReadOnlyModelViewSet from .models import MyModel from .serializers import MyModelSerializer class MyReadOnlyViewSet(ReadOnlyModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer 自定义 ViewSet 你可以通过继承 ViewSet 或 GenericViewSet 来实现自定义逻辑。 from rest_framework.viewsets import ViewSet from rest_framework.response import Response class MyCustomViewSet(ViewSet): def list(self, request): return Response({'message': 'Hello, list action!'}) def retrieve(self, request, pk=None): return Response({'message': f'Hello, retrieve action for pk={pk}!'}) (4) 路由器(Router) DRF 提供了路由器(Router)来自动生成 ViewSet 的 URL 配置。 from rest_framework.routers import DefaultRouter from .views import MyModelViewSet router = DefaultRouter() router.register(r'mymodels', MyModelViewSet) urlpatterns = router.urls 3. 推荐使用哪种方式? (1) 简单场景 如果逻辑简单,可以直接使用 APIView 或函数视图。 (2) 标准 CRUD 操作 如果需要对模型进行标准的 CRUD 操作,推荐使用 ModelViewSet,因为它可以快速生成完整的 API。 (3) 复杂逻辑 如果需要自定义逻辑,可以使用 ViewSet 或 GenericAPIView,结合 Mixin 类实现灵活的功能。 (4) 只读 API 如果只需要提供只读 API,可以使用 ReadOnlyModelViewSet。 (5) 代码复用 如果需要复用代码,推荐使用 GenericAPIView 和 Mixin 类。 4. ViewSet 的优势 代码简洁:将多个视图逻辑组合到一个类中,减少代码量。 自动 URL 配置:通过路由器自动生成 URL 配置,减少手动配置的工作量。 标准化:提供标准的 CRUD 操作,适合快速开发 RESTful API。

533 27 0
djangopythondrf
Python之虚拟环境
benojan 2024-1-9

Python之虚拟环境

一、创建环境 python -m venv ENV_DIR 二、激活环境 windows下: .\ENV_DIR\Scripts\activate mac下: source .\ENV_DIR\bin\activate 三、安装环境 pip install django pip install djangorestframework pip install pymysql pip install django-cors-headers 接下来可以参考: DRF的创建步骤

575 27 0
pythonvenv虚拟环境
Python之Turtle模块
benojan 2023-4-5

Python之Turtle模块

常用命令 窗体和画布 # 窗体大小 turtle.setup(宽, 高, x坐标=屏幕居中, y坐标=屏幕居中) # 画布大小 turtle.screensize(宽, 高, 色) turtle.screensize() # 默认:400 × 300 画笔 turtle.pensize(粗细) # 笔粗 turtle.width(粗细) # 笔粗 turtle.pencolor(色) # 笔色: white, yellow, magenta, cyan, blue, black turtle.pencolor(R,G,B) turtle.pencolor( (R,G,B) ) turtle.colormode(色型) # 色型: 1.0, 255 turtle.fillcolor(色) # 填色 turtle.color(笔色, 填色) 画笔动作 turtle.pendown() # 落笔 turtle.down() # 落笔 turtle.pd() # 落笔 turtle.penup() # 挈笔 turtle.up() # 挈笔 turtle.pu() # 挈笔 turtle.goto(x坐标, y坐标) # 移动 turtle.forward(距离) # 前进 turtle.fd(距离) # 前进 turtle.backward(距离) # 后退 turtle.bk(距离) # 后退 turtle.left(角度) # 左转 turtle.right(角度) # 右转 turtle.seth(角度) # 设置朝向 turtle.setheading(角度) # 设置朝向 turtle.begin_fill() # 开始上色 turtle.end_fill() # 结束上色 turtle.circle(半径, 角度=360) # 画弧线,半径>100,圆心在左侧,半径<100,圆心在右侧 全局 stamp() # 复制当前图形 turtle.write(文字, 字体=("字体名", 字号, "字形")) turtle.showturtle() # 显示海龟 turtle.hideturtle() # 隐藏海龟 turtle.isvisible() # 检查海龟是否可见 turtle.clear() # 清除(只清除绘图) turtle.reset() # 重置(恢复一切到初始) turtle.undo() # 撤销动作 turtle.exitonclick() # 画完不关窗,点窗退出 turtle.done() # 中断绘制,关窗后继续绘制 颜色表 英文名 RGB整数表示色型 RGB小数表示色型 中文名 white 255, 255, 255 1, 1, 1 白 yellow 255, 255, 0 1, 1, 0 黄 magenta 255, 0, 255 1, 0, 1 梅红 cyan 0, 255, 255 0, 1, 1 青 blue 0, 0, 255 0, 0, 1 蓝 black 0, 0, 0 0, 0, 0 乌 seashell 255, 245, 238 1, 0.96, 0.93 海贝 gold 255, 215, 0 1, 0.84, 0 金 pink 255, 192, 203 1, 0.75, 0.80 粉 brown 165, 42, 42 0.65, 0.16, 0.16 棕/褐 purple 160, 32, 240 0.63, 0.13, 0.94 紫 tomato 255, 99, 71 1, 0.39, 0.28 番茄色

656 27 0
pythonturtle
Python之Turtle模块

搜索

搜索历史 清空

最新评论

标签

  • 重写
  • 继承
  • 虚函数
  • springboot
  • java
  • drf
  • 私服
  • 脚本
  • Windows窗口程序
  • cmake
  • dll
  • Modeless
  • Accelerators
  • WTL
  • ListCtrl
  • MFC
  • regex
  • 正则表达式
  • 虚拟环境
  • venv
  • radio
  • html
  • vim
  • nodejs
  • Linux
  • 宝塔面板
  • bt
  • chatGPT
  • AI
  • turtle
  • python
  • 我的世界
  • api
  • bukkit
  • 字符串操作
  • docker
  • 本地架设
  • 游戏
  • 编程
  • CodeCombat
  • 教程
  • 插件开发
  • Minecraft
  • GBK
  • Unicode
  • UTF-8
  • 字符集
  • 转换
  • 编码
  • boost

链接

  • 標準吳語字典
  • 台州方言維基
  • 溫嶺吳語微辭典
关于 友链 rss
Powered by benojan

备案号: