django drf框架自带的路由及最简化的视图

针对该话题,我介绍一下关于Django DRF框架自带的路由和最简化的视图的完整攻略。

一、Django DRF框架自带的路由

在Django DRF框架中,提供了多种路由匹配方法,其中最常用的是DRF自带的路由匹配器。

首先,需要导入includedefault-router两个路由相关的模块:

from django.urls import path, include
from rest_framework.routers import DefaultRouter

接着,定义一个名为routerDefaultRouter对象,并在其中添加对应的路由路径:

router = DefaultRouter()
router.register(r'users', UserViewSet)

其中,register()方法的第一个参数是想要对其进行路由的路径名,第二个参数是对应的视图函数。

最后,将路由注册到url路由中:

urlpatterns = [
    path('', include(router.urls))
]

这里的include()方法的作用是将router.urls中的路由路径都添加到url路由中。

通过以上步骤,我们完成了Django DRF框架自带的路由配置。

二、最简化的视图

在Django DRF框架中,视图函数通常为继承APIView类的子类,同时可以使用Django DRF框架自带的响应类实现不同的响应。

例如:

from rest_framework.views import APIView
from rest_framework.response import Response

class HelloAPIView(APIView):
    """
    简单的APIView示例
    """
    def get(self, request, format=None):
        """
        获取简单的信息
        """
        return Response({'msg': 'hello, world!'})

在以上的代码中,我们定义了一个名为HelloAPIView的类,它继承自APIView类,并实现了get()方法。通过Response类,它可以返回由我们指定的响应数据。

在完成以上步骤之后,还需要将视图类添加到路由中。可以使用如下方式进行添加:

urlpatterns = [
    path('hello/', HelloAPIView.as_view(), name='hello'),
]

以上的代码,将名为HelloAPIView的类作为视图函数添加到了路径名为hello/的路由中。

示例1

在这里,我们看一个最简的APIView的代码示例:

from rest_framework.views import APIView
from rest_framework.response import Response


class DemoView(APIView):

    def get(self, request):
        return Response({'hello': 'world!'})

在上面的代码中,定义了一个名为DemoViewAPIView视图,它实现了get()方法,通过Response()方法返回响应数据{'hello': 'world!'}

示例2

那么,接下来,我将展示如何自定义一个序列化器类,以便在视图函数中返回序列化的数据。示例如下:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import serializers


class DemoSerializer(serializers.Serializer):
    """
    序列化器定义
    """
    name = serializers.CharField(max_length=10)
    age = serializers.IntegerField()
    addr = serializers.CharField(max_length=50)


class DemoView(APIView):

    def get(self, request):
        data = {'name': 'Tom', 'age': 20, 'addr': 'beijing'}
        serializer = DemoSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        return Response(serializer.validated_data)

在上面的代码中,我们首先定义了一个DemoSerializer的序列化器类,并在其中定义了三个字段。

然后,在视图函数中,我们将要序列化的数据{'name': 'Tom', 'age': 20, 'addr': 'beijing'}传递给DemoSerializer序列化器,并使用is_valid()方法进行验证,最后通过Response()方法返回序列化后的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django drf框架自带的路由及最简化的视图 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django笔记二之连接数据库、执行migrate数据结构更改操作

    本篇笔记目录索引如下: Django 连接mysql,执行数据库表结构迁移步骤介绍 操作数据库,对数据进行简单操作 接下来几篇笔记都会介绍和数据库相关,包括数据库的连接、操作(包括增删改查)、对应的字段类型、model 里Meta 相关参数和 QueryAPI 的详解等。 这一篇先介绍数据库的连接和简单的增删改查操作。 首先介绍一些 Django 的操作表的…

    2023年4月10日
    00
  • Django Cannot assign “A1”: “B1” must be a “C1” instance. 错误信息

    常见报错 Cannot assign “A1”: “B1” must be a “C1” instance. 告诉我们 必须使用 C1 模型类的 实例,而不是具体的参数值。 1 这个错误信息,是我写入数据库时,表中使用了外键造成的 2 3 如果外键用fid表示,关联 用户表 User的话 4 5 6 写入数据库时 Book.objects.create(fi…

    Django 2023年4月9日
    00
  • windows系统IIS部署Django项目的实践

    下面我将详细讲解“windows系统IIS部署Django项目的实践”的完整攻略,并且会包含两条示例说明。 1. 确保服务器满足要求 在部署 Django 项目前,请先确保服务器满足以下要求: 安装好 Python3. 安装好 Django Web 框架 服务器已安装了 IIS,且 IIS 版本不低于 7.0 安装好 WFastCGI 扩展(用于实现 Pyt…

    Django 2023年5月16日
    00
  • django的聚合函数和aggregate、annotate方法使用详解

    标题:Django的聚合函数和aggregate、annotate方法使用详解 在Django的ORM中,聚合函数和aggregate、annotate方法是用来对查询的结果进行统计和分析的常用方法。下面详细介绍聚合函数和这两个方法的使用方法,并提供两个示例说明。 一、聚合函数 聚合函数是用来对查询结果进行统计分析的函数。常用的聚合函数有:Count(), …

    Django 2023年5月16日
    00
  • Python的Django框架中模板碎片缓存简介

    Python的Django框架中模板碎片缓存简介 什么是模板碎片缓存? Django中的模板碎片缓存(Template Fragment Caching)是一种缓存技术,通过缓存模板的部分内容来提高网站的响应速度。在每次请求时,不必重新渲染整个页面,而是只需要重新渲染页面中发生变化的部分。 如何使用模板碎片缓存? 首先需要在settings.py中配置缓存:…

    Django 2023年5月16日
    00
  • Python Django Cookie 简单用法解析

    下面是对“Python Django Cookie 简单用法解析”的详细讲解,包括两条示例说明: Python Django Cookie 简单用法解析 什么是Cookie Cookie是指存储在客户端中的一种数据结构,主要用于记录用户的一些状态信息,如语言、购物车、登录等信息。当用户再次访问网站时,浏览器能够将Cookie信息自动发送到服务器,服务器可以根…

    Django 2023年5月16日
    00
  • django执行迁移文件报错struct.error: unpack requires a buffer of 4 bytes

    问题: 我使用的版本说明 django:2.2版本 djangorestframework:3.11版本 python3.6版本 解决 查了下资料,没有很详细的说明,我是因为需要使用继承django自带的User模型并自定义一个模型类,需要配置AUTH_USER_MODEL,但是我不是第一数据库迁移的时候就配置了这个,所以我需要把所有的表删了,而且要把所有的…

    Django 2023年4月12日
    00
  • 【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式

    1:设置mysql原生分页 # 监控系统首页显示分页 def MyPagination(limitid,offsetid): limitid =str(limitid) offsetid =str(offsetid)   # 这里是mysql原生代码 show_goods = “select dal_keywordtable.* from (select a…

    Django 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部