百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

2022年Django Rest框架介绍(django框架百度百科)

ccwgpt 2025-03-30 14:44 21 浏览 0 评论

在本系列中,我们将介绍使用 Django Rest Framework 构建 API 的基础知识。 在第一个教程中,我们将介绍一些基本设置和概念,我们将在本系列的未来补充中使用它们。 第一个教程将遵循文档中的快速入门。 稍后我们将花一些时间更详细地了解这些概念,但现在我们只需要开始做一些事情。


项目设置

在我们做任何其他事情之前,我们需要设置我们的项目。 首先让我们为项目创建一个目录,安装所有东西并创建一个 django 项目。

mkdir music_api_tutorial
cd music_api_tutorial# Create a virtual environment to isolate our package dependencies locally
python3 -m venv env
source env/bin/activate  # On Windows use `env\Scripts\activate`# Install Django and Django REST framework into the virtual environment
pip install django
pip install djangorestframework# Set up a new project with a single application
django-admin startproject music_api .
cd music_api
django-admin startapp catalog
cd ..

现在我们有了一个项目,我们需要确保在 settings.py 文件中将 rest 框架添加到您的 installed_apps 中。

INSTALLED_APPS = [
'rest_framework',
]


序列化器

在第一个教程中,我们将按照文档设置基本的序列化程序、视图和 url。 我们将更详细地介绍这些单独的部分在未来是如何工作的,但现在我们只关注一个基本示例。 首先我们需要设置一个序列化器。 序列化程序将处理 Django 模型对象与本机 Python 数据类型之间的转换,我们可以轻松地将其呈现为 JSON 以作为 API 的响应发送。 幸运的是,Django 有很多内置的类让我们更容易做到这一点。 现在让我们使用其中之一。

from django.contrib.auth.models import User, Group
from rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

我们设置了一个用户序列化器和一个组序列化器。 这些都来自内置模型,因此我们不必担心定义用户或组是什么,当我们安装 Django 时,它会附带。


意见

现在我们需要实际创建用于与 API 交互的端点。 让我们像文档一样设置用户和组视图集。 现在我们只需要知道视图集将为我们处理所有的创建、读取、更新和删除操作。

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_framework import permissions
from tutorial.quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]

这处理了我们视图所需的一切。 现在我们需要一种访问视图的方法。 这就是我们的网址发挥作用的地方。


网址

让我们设置一个 url 模式来访问这两个视图。 要设置它,我们可以使用 path() 函数并设置模式、视图,还可以选择设置名称。 模式将是用户访问的实际 url,视图将是在此 url 模式中使用的函数视图、类视图或视图集。 如果是类视图或视图集,则需要在视图名称后添加 .as_view() 。 可选名称可以使在 api 的其他部分中引用 url 更容易。

from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import viewsrouter = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

由于我们使用的是视图集,因此我们也可以使用路由器。 路由器将自动处理视图集需要的不同 url 模式。 例如,用户视图集需要两个 url。 /users/ 将具有获取和发布所有用户和创建新用户的方法。 /users// 将具有 get、post、put、delete 以通过其 id 更新或获取特定用户。 将被替换为 id。 在这种情况下,我们使用的是 DefaultRouter,还有其他可用选项,但对于基本示例,这将正常工作。 我们还需要将路由器包含在它自己的 path() 中,这样它才能正常工作,我们也这样做了。


分页

最后让我们设置一些基本的分页设置。

REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}


测试 API

现在我们应该把所有东西都设置好。 我们可以通过以下方式对其进行测试。

python3 manage.py runserver



现在你有两个选项来测试,要么打开像 postman 或 insomnia 这样的 api 客户端,然后以这种方式测试 url 路由,要么因为我们在我们的 url 中设置了它

我们将在本教程中停下来。 稍后我们将返回并更详细地浏览这些部分,以更好地了解所有这些是如何工作的。

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: