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 基础篇

    一:Django 简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。Django的理念是DRY(…

    Django 2023年4月9日
    00
  • Django实现学生管理系统

    下面我将为您提供关于“Django实现学生管理系统”的详细攻略: 1. 前置条件 在开始实现学生管理系统之前,需要确保您系统中已经安装了以下软件: Python 3.x Django 2.x MySQL(或其他数据库) 如果您还没有安装以上软件,您可以在以下链接中找到安装教程: Python 3.x安装教程 Django 2.x安装教程 MySQL安装教程 …

    Django 2023年5月16日
    00
  • 深入浅析Django MTV模式

    关于深入浅析Django MTV模式的完整攻略,我将详细阐述如下。 MTV模式概述 Django框架采用的是MTV模式,也就是Model-Template-View(模型-模板-视图)模式,是一种用于构建Web应用程序的软件设计模式。在这种模式中,Model负责数据存储和处理,Template负责用户交互页面设计,View负责进行逻辑处理和数据渲染。 MTV…

    Django 2023年5月16日
    00
  • Django如何批量创建Model

    首先,我们需要明确批量创建Model的场景。一般情况下,需要批量创建Model的场景比较罕见,因为Model用于描述一个数据表,每个表都有自己独立的结构和字段,不同的表之间极少会存在字段完全一致的情况。不过,在某些特殊情况下,可能需要针对一种特定的数据格式,创建多个具有相似结构的表,这时批量创建Model就派上用场了。 假设我们有一个需求,需要创建10个具有…

    Django 2023年5月16日
    00
  • Django使用第三方模块django-password-reset重置密码

    网上关于django第三方模块django-password-reset重置密码的几篇博客有一个严重的bug 见博客:https://blog.csdn.net/qq_42820268/article/details/81940353 中的内容。 关键是:上文提到的urls.py配置, 出现错误,并提出解决办法,实际上并没有解决,应该写为:url(r’^pw…

    Django 2023年4月13日
    00
  • Django中的文件的上传的几种方式

    Django中的上传文件有多种方式,这里主要介绍三种,分别是使用Django自带的文件上传类、使用第三方库django-storages以及手动实现文件上传。 使用Django自带的文件上传类 Django中自带了一个处理文件上传的类django.forms.ImageField,可以用它来实现上传图片的功能。 在models.py中定义一个ImageFie…

    Django 2023年5月16日
    00
  • python之Django自动化资产扫描的实现

    我将详细讲解一下“python之Django自动化资产扫描的实现”的完整攻略,过程中会包含两条示例说明。 1. 什么是Django自动化资产扫描 Django是一个基于Python的Web框架,它简单易用,自带ORM(对象关系映射)和模板系统,可以轻松构建Web应用。本文所讲的Django自动化资产扫描,是指使用Django框架实现网络资产扫描的过程。 2.…

    Django 2023年5月16日
    00
  • Django自定义权限及用户分组

    下面是关于Django自定义权限及用户分组的完整攻略,包含了两条示例说明。 一、定义自己的权限 在Django中,每一个权限都是一个Permission对象,而权限的分类则是Permission对象的Groups。我们可以通过继承Django的 PermissionMixin 类来在我们的模型中定义自己的权限,并将其归类到我们自定义的 Group 对象中。 …

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