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

yizhihongxing

针对该话题,我介绍一下关于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日

相关文章

  • 使用docker部署django技术栈项目的方法步骤

    下面我将为你详细讲解使用Docker部署Django技术栈项目的方法步骤。 1. 环境准备 在进行Docker部署前,需要先安装Docker和Docker Compose。在Linux系统中,可以通过以下命令安装: # 安装 Docker sudo apt-get update sudo apt-get install docker-ce # 安装 Dock…

    Django 2023年5月16日
    00
  • 用wfastcgi在IIS下部署Django&Flask

    Django跟Flask在Linux底下都可以很方便地以FastCGI模式部署,貌似IIS下面不很好配置,而且IIS也缺少一个像PHPmanager一样的全自动配置工具,在公司服务器上部署起来颇费周折,部署后总结起来过程倒也不复杂,主要是网上并没有给出一个完整的方案,这里记录一下方便大家使用 先来Django吧,在自己机器上简单开一个测试用网站,这里我用“C…

    Django 2023年4月16日
    00
  • nginx+uwsgi+django部署流程

      当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产。   nginx+uwsgi+django是我们常用的django部署方式。nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己…

    Django 2023年4月12日
    00
  • django中itsdangerous的用法

     itsdangerous用来解决什么问题,为什么需要用到itsdangerous? 安装命令:pip install itsdangerous 有时候你想向不可信的环境发送一些数据,但如何安全完成这个任务呢?解决的方法就是签名。使用只有你自己知道的密钥,来加密签名你的数据,并把加密后的数据发给别人。当你取回数据时,你就可以确保没人篡改过这份数据。 诚然,接…

    Django 2023年4月10日
    00
  • django框架模型层功能、组成与用法分析

    Django框架模型层功能、组成与用法分析 1. 模型层的作用 Django框架采用了MVC模式,其中模型层是其核心部分。它的作用是连接数据库、处理数据和提供数据的接口。模型层相当于应用程序和数据库管理系统之间的中间层,它负责与数据库进行交互,提供了支持存储和检索数据的常用方法,例如添加、删除、修改和查询数据记录等。 2. 模型层的组成 模型层由模型类、管理…

    Django 2023年5月16日
    00
  • Django框架表单操作实例分析

    当我们在使用Django进行web开发时,表单操作是不可避免的一个话题。在这里,我们将针对Django框架下的表单操作进行详细的讲解和示例分析。 简介 Django框架提供了很多方便的表单组件,使开发者可以快速地创建并处理表单数据。所以,我们可以使用Django框架来开发一些包含表单操作的web应用,比如用户注册、登录、数据录入等等。 在下面的示例中,我们将…

    Django 2023年5月16日
    00
  • Django权限控制进阶

    一、一级菜单的排序 我们用字典存放菜单信息,而字典是无序的,当一级菜单过多时可能会出现乱序情况,因此需要给一级菜单排序 1.给一级菜单表的model中加一个weight权重的字段 ,权重越大越靠前 weight = models.IntegerField(default=1, verbose_name=’权重’) 2.应用有序字典存放菜单信息 引用: fro…

    Django 2023年4月12日
    00
  • Python Django实现个人博客系统的搭建

    Python Django实现个人博客系统的搭建攻略 简介 Python的Django框架在web开发中应用广泛,本文将介绍如何使用Django框架搭建个人博客系统。该博客系统除常见博客功能外,还包含用户身份验证,文章归档,评论系统等功能。 必要的工具及技能 在开始搭建博客系统前,需要准备好以下工具及技能: Python3.x Django HTML,CSS…

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