网站模板 茶叶响应式wamp做的网站外网怎么访问不了

bicheng/2026/1/20 0:30:05/文章来源:
网站模板 茶叶响应式,wamp做的网站外网怎么访问不了,合肥建站企业,上海松江建设银行网站想要让你的API服务像五星级餐厅一样令人难忘吗#xff1f;今天阿佑将为你揭晓#xff01;从基础的RESTful原则到Django REST framework的高级特性#xff0c;我们一步步带你走进API开发的后厨#xff0c;展示如何准备食材#xff08;数据模型#xff09;、调制酱料#… 想要让你的API服务像五星级餐厅一样令人难忘吗今天阿佑将为你揭晓从基础的RESTful原则到Django REST framework的高级特性我们一步步带你走进API开发的后厨展示如何准备食材数据模型、调制酱料序列化器、烹饪佳肴视图集并确保每一道菜API端点都安全可口。不仅如此我们还将分享如何为API添加个性化服务认证与权限管理让你的服务既安全又贴心。现在就加入阿佑让我们一起学习如何用DRF打造令人垂涎的API大餐 文章目录 使用 Django REST framework 构建 API1. RESTful API 设计原则1.1 REST 架构概述1.2 CRUD 操作映射1.3 状态码与响应格式规范1.4 资源与关系表述 2. Django REST framework 概览2.1 安装与集成2.2 主要组件介绍2.2.1 Serializers2.2.2 Views ViewSets2.2.3 Routers URLs2.2.4 Filters Pagination 2.3 功能扩展与自定义 3. 序列化器和视图集3.1 创建序列化器3.1.1 ModelSerializer3.1.2 Serializer 3.2 视图集操作3.2.1 ListCreateAPIView3.2.2 RetrieveUpdateDestroyAPIView 3.3 关系字段处理与嵌套序列化 4. API 认证和权限4.1 内置认证机制4.1.1 TokenAuthentication4.1.2 SessionAuthentication4.1.3 BasicAuthentication 4.2 自定义认证4.3 权限管理4.3.1 DjangoModelPermissions4.3.2 IsAuthenticated4.3.3 自定义权限类 5. 结论5.1 Django REST framework 优势总结5.2 适用场景与最佳实践建议最佳实践建议 参考文献 使用 Django REST framework 构建 API 1. RESTful API 设计原则 1.1 REST 架构概述 想象一下你走进一家餐厅菜单上摆满了各式各样的美味佳肴。你不需要知道这些菜是如何制作的你只需要点菜然后服务员就会为你端上美味。这就是 RESTful API 的魅力——简单、直观、用户友好。 REST即表述性状态转移Representational State Transfer是一种软件架构风格它使得网络服务像网页一样易于访问。在 RESTful 架构中每个资源都有一个唯一的标识符URI通过使用标准的 HTTP 方法如 GET、POST、PUT、DELETE你可以对这些资源进行操作。 1.2 CRUD 操作映射 CRUD 代表创建Create、读取Read、更新Update和删除Delete。在 RESTful API 中这些操作对应于不同的 HTTP 方法 GET读取资源。就像在餐厅点菜你告诉服务员你想要什么然后他们为你提供。POST创建资源。这就像是向餐厅下单告诉他们你想要一份新的菜肴。PUT更新资源。如果你对菜肴有特别的口味要求可以通过 PUT 方法告诉厨师进行调整。DELETE删除资源。当你吃完了不再需要这份菜肴时可以通过 DELETE 方法告诉服务员将其撤下。 1.3 状态码与响应格式规范 在 RESTful API 中服务器会通过 HTTP 状态码来告诉客户端请求的结果。就像餐厅服务员通过不同的语气和表情来传达信息一样状态码也有它们自己的“表情” 200 OK一切顺利就像你点的菜完美地呈现在你面前。201 Created资源创建成功就像你的新菜肴已经被添加到菜单上。400 Bad Request请求有误就像你点了一份不存在的菜。404 Not Found资源未找到就像你点的菜已经售罄。500 Internal Server Error服务器内部错误就像厨房突然发生了火灾。 响应格式通常是 JSON因为它轻量、易于阅读和解析就像菜单上清晰的字体和图片让你一目了然。 1.4 资源与关系表述 在 RESTful API 中每个资源都是独立的它们之间的关系通过链接HATEOAS来表述。这就像是餐厅的菜单上每道菜旁边都有推荐搭配的酒水或甜点告诉你这些组合是如何相互关联的。 通过这种方式API 的使用者可以轻松地从一个资源导航到另一个资源就像在餐厅中你可以轻松地从开胃菜转到主菜再到甜点。 这就是 RESTful API 的设计原则简单、直观就像在餐厅享受美食一样轻松愉快。下一章我们将深入 Django REST framework 的世界探索如何用它来构建这些美味的 API。别着急我们一步一步来就像品尝一道道精致的菜肴。 2. Django REST framework 概览 2.1 安装与集成 想象一下你拥有一家餐厅你想要在网上提供外卖服务。首先你需要一个厨房而 Django REST framework (DRF) 就是你的厨房一个强大的后端框架让你能够快速搭建起一个高效的 API。 要开始使用 DRF你首先需要在你的 Django 项目中安装它就像购买厨房设备一样。你可以通过 pip 安装 pip install djangorestframework然后在你的 Django 项目的 settings.py 文件中添加 rest_framework 到 INSTALLED_APPS 列表中这样你的厨房就准备好了。 2.2 主要组件介绍 2.2.1 Serializers 在 DRF 中序列化器Serializers是将模型Models转换为 Python 数据类型通常是字典的助手同时也负责将这些数据反序列化为模型实例。这就像是餐厅的菜单它详细列出了每道菜的原料和制作方法让厨师和顾客都能清楚地了解。 2.2.2 Views ViewSets 视图Views是处理请求和返回响应的组件。在 DRF 中视图集ViewSets是一种特殊的视图它提供了一组动作如 list, create, retrieve, update, partial_update, destroy来处理不同的 HTTP 方法。这就像是餐厅的服务员他们知道如何处理顾客的点餐和结账。 2.2.3 Routers URLs 路由器Routers是 DRF 中用来自动组织 URL 的工具。通过路由器你可以定义视图集并自动为它们创建 URL 路由。这就像是餐厅的座位分配系统它自动为你安排座位让你无需担心位置问题。 2.2.4 Filters Pagination 过滤器Filters和分页Pagination是 DRF 提供的两个功能用于处理大量数据。过滤器可以帮助用户根据特定条件筛选数据而分页则允许用户分批次获取数据。这就像是餐厅的点餐系统它允许你先查看菜单过滤器然后分批次点餐分页。 2.3 功能扩展与自定义 DRF 的强大之处在于它的可扩展性和自定义能力。你可以根据自己的需求扩展或自定义序列化器、视图、路由器等组件。这就像是在餐厅中你可以根据自己的口味定制菜肴或者添加一些特别的调料。 通过上述介绍我们了解了 Django REST framework 的基本概览。就像一家餐厅的厨房DRF 提供了所有必要的工具和组件让你能够构建一个强大且灵活的 API。接下来我们将深入学习如何使用这些工具来创建美味的 API 菜肴。别着急我们一步一步来就像准备一顿丰盛的大餐。 3. 序列化器和视图集 3.1 创建序列化器 在 Django REST framework 中序列化器就像是厨房里的调料盒它们将食材数据进行调味转换以适应不同的菜品API 响应。序列化器有两种主要类型ModelSerializer 和 Serializer。 3.1.1 ModelSerializer ModelSerializer 是一种特殊的序列化器它与 Django 的模型Model紧密相连。使用 ModelSerializer你可以轻松地将模型实例转换为 JSON 格式或者从 JSON 数据创建模型实例。这就像是在厨房里你有一个现成的食谱可以快速制作出一道菜。 举个例子假设我们有一个简单的 Book 模型 from django.db import modelsclass Book(models.Model):title models.CharField(max_length100)author models.CharField(max_length100)published_date models.DateField()对应的 ModelSerializer 可以这样写 from rest_framework import serializers from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model Bookfields [id, title, author, published_date]这段代码就像是告诉厨师“嘿我需要一个包含 ID、标题、作者和出版日期的菜单项。” 3.1.2 Serializer 如果你需要更多的灵活性比如自定义字段或者不与模型直接关联的数据结构那么 Serializer 就是你的不二选择。这就像是在厨房里你想要创新制作一道全新的菜肴。 class CustomBookSerializer(serializers.Serializer):title serializers.CharField(max_length100)author serializers.CharField(max_length100)publish_date serializers.DateField()这里我们完全控制了数据的序列化过程就像是一个创意无限的厨师。 3.2 视图集操作 视图集是 DRF 中处理 API 端点的高效方式。它们通过组合不同的视图来处理不同的 HTTP 方法。 3.2.1 ListCreateAPIView ListCreateAPIView 是用来列出所有资源和创建新资源的视图集。这就像是餐厅的菜单顾客可以看到所有可选的菜品并且可以点新的菜。 from rest_framework import viewsets from .models import Book from .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet):queryset Book.objects.all()serializer_class BookSerializer这段代码定义了一个视图集它允许用户查看所有书籍和添加新的书籍。 3.2.2 RetrieveUpdateDestroyAPIView RetrieveUpdateDestroyAPIView 用于检索、更新和删除单个资源。这就像是顾客在餐厅中他们可以要求查看特定菜品的详细信息或者根据自己的口味调整菜品甚至是取消点单。 3.3 关系字段处理与嵌套序列化 在 DRF 中处理模型之间的关系比如外键或多对多关系可以通过在序列化器中使用关系字段来实现。这就像是在厨房里你需要将不同的食材组合在一起制作出一道道美味的复合菜。 假设我们有一个 Author 模型与 Book 模型有一对多的关系 class AuthorSerializer(serializers.ModelSerializer):books serializers.PrimaryKeyRelatedField(manyTrue, querysetBook.objects.all())class Meta:model Authorfields [id, name, books]在这个例子中AuthorSerializer 包含了一个 books 字段它使用 PrimaryKeyRelatedField 来表示与 Book 模型的关系。 通过创建序列化器和视图集我们就像是在厨房里准备食材和制定菜谱。接下来我们将探索如何为这些 API 端点添加安全防护确保只有合适的顾客可以点到他们想要的菜。别着急我们一步一步来就像精心准备一顿美味的晚餐。 4. API 认证和权限 4.1 内置认证机制 在 RESTful API 的世界里认证就像是餐厅的门卫它确保只有合法的顾客能够进入并享受服务。Django REST framework 提供了几种内置的认证机制来保证 API 的安全。 4.1.1 TokenAuthentication TokenAuthentication 是一种常见的认证方式它通过一个唯一的令牌Token来识别用户。这就像是餐厅给常客发放的会员卡顾客出示会员卡就可以享受服务。 from rest_framework.authtoken.views import obtain_auth_token from rest_framework.authtoken.models import Token from rest_framework.response import Response from rest_framework import statusclass MyAuthView(obtain_auth_token):def post(self, request, *args, **kwargs):token, created Token.objects.get_or_create(userrequest.user)return Response({token: token.key}, statusstatus.HTTP_200_OK)这段代码就像是告诉顾客“嘿欢迎回来这是你的会员卡请保管好。” 4.1.2 SessionAuthentication SessionAuthentication 利用 Django 的会话框架来认证用户。这就像是顾客在餐厅的前台登记然后工作人员会记住他们的信息。 4.1.3 BasicAuthentication BasicAuthentication 是一种基于 HTTP 标准认证的机制它要求用户提供用户名和密码。这就像是餐厅的 VIP 入口只有提供正确的身份信息才能进入。 4.2 自定义认证 有时候内置的认证机制可能不够用或者你想要添加一些特殊的逻辑。这时你可以自定义认证类。这就像是餐厅门卫根据老板的特殊指示对某些顾客进行特别的检查。 from rest_framework.authentication import BaseAuthenticationclass MyCustomAuthentication(BaseAuthentication):def authenticate(self, request):# 自定义认证逻辑username request.META.get(HTTP_X_CUSTOM_USERNAME)password request.META.get(HTTP_X_CUSTOM_PASSWORD)user authenticate(usernameusername, passwordpassword) # Django 的 authenticate 函数return (user, None) if user else (None, None)这段代码就像是门卫说“嘿老板说今天要检查特别的密码你能告诉我吗” 4.3 权限管理 权限管理就像是餐厅的菜单不同的顾客可以看到不同的菜品。在 DRF 中权限类决定了哪些用户可以执行哪些操作。 4.3.1 DjangoModelPermissions DjangoModelPermissions 是一个基于 Django 模型的权限类。它允许你根据用户对模型的权限来限制 API 访问。这就像是餐厅的菜单上有普通区和 VIP 区VIP 顾客可以看到更多的菜品。 4.3.2 IsAuthenticated IsAuthenticated 是一个简单的权限类它只允许认证过的用户访问 API。这就像是餐厅的基本规则只有进来的顾客才能点菜。 4.3.3 自定义权限类 如果你需要更复杂的权限逻辑你可以自定义权限类。这就像是餐厅老板根据顾客的喜好和特殊需求提供定制化的服务。 from rest_framework.permissions import BasePermissionclass IsAdminOrReadOnly(BasePermission):def has_permission(self, request, view):# 只允许管理员用户创建或修改数据if request.method in [GET, HEAD, OPTIONS]:return Truereturn request.user and request.user.is_staffdef has_object_permission(self, request, view, obj):# 只允许对象的创建者或管理员用户修改数据return (request.method in [GET, HEAD, OPTIONS] orobj.created_by request.user orrequest.user.is_staff)这段代码就像是餐厅老板说“嘿只有我们的厨师长和 VIP 顾客可以更改菜单上的菜品。” 通过内置的认证和权限管理我们可以确保 API 的安全和可靠。就像餐厅确保每位顾客都能享受到他们应得的服务一样。接下来我们将总结 Django REST framework 的优势并给出一些适用场景和最佳实践建议。别着急我们一步一步来就像精心烹饪每一道菜。 5. 结论 5.1 Django REST framework 优势总结 在这段旅程的尾声我们来回顾一下 Django REST frameworkDRF给我们带来的美味佳肴。DRF 就像是厨房里的万能料理机它不仅功能强大而且灵活多变能够满足各种口味的需求。 强大的序列化器 DRF 的序列化器让数据转换变得简单而直观。无论是简单的数据结构还是复杂的模型关系序列化器都能轻松应对就像是厨房里的多功能料理机能切能打无所不能。 灵活的视图集 视图集的存在让 API 的开发变得异常高效。通过组合不同的视图我们可以快速构建出功能完备的 API 端点这就像是有了一份详细的菜谱即使是新手厨师也能做出美味的大餐。 丰富的认证和权限机制DRF 提 供了多种认证方式和权限类使得 API 的安全性得到了保障。这就像是餐厅的安全系统确保只有合适的顾客能够享受到服务。 易于扩展和自定义 DRF 的可扩展性和自定义能力让它能够适应各种特殊的需求。无论是修改现有的组件还是从头开始构建新的功能DRF 都能提供强大的支持。 5.2 适用场景与最佳实践建议 适用场景 DRF 适用于需要快速开发和高度可定制的 API 场景。无论是小型项目还是大型企业级应用DRF 都能提供稳定而高效的解决方案。 最佳实践建议 保持简洁在设计 API 时尽量保持接口简洁明了避免过度复杂。利用视图集尽可能使用视图集来简化代码提高开发效率。合理使用认证和权限根据项目需求选择合适的认证和权限机制确保 API 的安全性。编写文档为你的 API 提供详细的文档这不仅有助于他人使用也有助于自己维护。持续测试编写测试用例确保 API 的稳定性和可靠性。 随着我们对 DRF 的探索结束就像是完成了一顿丰盛的大餐。希望这顿大餐能够让你对 Django REST framework 有了更深的了解并且能够激发你在 API 开发上的热情。记住无论是在厨房还是在代码世界里最重要的是享受过程创造出令人满意的成果。别着急慢慢来每一步都值得深思熟虑 我是阿佑一个致力于把晦涩的技术讲得有趣的中二青年路过的观众姥爷们给个点赞加关注阿佑将带你持续探索 Python 的世界 ~ 参考文献 Django REST framework 官方文档 https://www.django-rest-framework.org/ 这是最权威的资源提供了关于 DRF 的全面指南从安装到高级特性的介绍是学习和使用 DRF 的基础。 RESTful Web Services O’Reilly Media, Inc. https://www.oreilly.com/library/view/restful-web-services/9780596529260/ 这本书是 RESTful 服务领域的经典之作详细解释了 REST 架构的原理和实践对于理解 RESTful API 的设计非常有帮助。 Building APIs with Django REST framework https://example.com/building-apis-with-drf 这本电子书提供了实际的案例和教程帮助开发者从零开始构建和部署使用 DRF 的 API。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站自己做服务器上海公司拍沪牌需要什么条件

vscode用着习惯了,也不想再装别的ide 1.安装vscode 这一步默认已完成 2.安装插件 搜索插件安装 3.选择调试器 Ctrl Shift P(或F1),在打开的输入框中输入 Python: Select Interpreter 搜索,选择 Python 解析器 选择自己安…

旅游类网站建设定制官网

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址:https://arxiv.org/abs/2211.08411 官方GitHub项目(代码和实体)&#xf…

建立网站主页注意那些方面附近做app的公司

随着智能交通和自动驾驶技术的快速发展,车载摄像头作为车辆感知外界环境的重要部件,其画面质量对于行车安全和用户体验至关重要。然而,由于光线变化、设备差异以及拍摄环境复杂多变,车载摄像头拍摄的画面往往会出现颜色失真、对比…

学校网站注重服务平台建设泰州东方医院有限公司

理想情况下,生成式 AI 的落地应用需要提供真实且高质量的响应。SELF-RAG 正是为解决此问题而被创建的。 背景介绍 有趣的是,RAG的发展轨迹与提示工程(prompt engineering)非常相似。RAG 最初是一个简单而有效的概念,其…

顺德大良网站建设百度网站大全首页

经过前几篇博客的学习 Spring 系列的基本操作已经实现的差不多了,接下来,我们来学习更重要的知识,将前端传递的数据存储起来,或者查询数据库里面的数据。 一、MyBatis 是什么? MyBatis 是一款优秀的持久层框架&…

苏宁易购网页布局设计搜索引擎优化岗位

文章目录 1 桥接模式(Bridge Pattern)1.1 介绍1.2 概述1.3 桥接模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二2.1 需求2.1 代码实现 🙊 前言:本文章为瑞_系列专栏之《23种设计模式》的桥接模式篇。本文中的部分图和概念等资料…

做网站盐城哈尔滨高端模板建站

文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…

网站建设问题及对策新手做网站应该注意什么

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。这套黄河风景线旅游网站是根据当前的现实需要&#xf…

学术会议网站建设百色建设厅网站

实验配置 eNSP 什么是二层交换 二层交换是指在同一个ip网段内,数据通过二层交换机进行转发。 什么是mac地址 mac地址也叫做硬件地址,是以太网协议的链路层地址。简单的来说,mac地址就是我们硬件的身份证,独一无二。它是由48个bi…

做书籍封皮的网站国际网站平台

文章目录 一、模型的处理二、TDR仿真2.1 修改求解模式2.2增加求解设置 三、查看仿真结果3.1 查看TDR结果3.2 查看S参数结果 四、结果分析4.1上升时间tr对仿真的影响 附:工程链接 在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看…

电视盒子做网站服务器深圳社保网上服务平台

一、HMM中的第三个基本问题 参数估计问题:给定一个观察序列OO1O2…OT,如何调节模型μ(A,B,π)的参数,使得P(O|μ)最大化: argmaxμP(Otraining|μ)arg \max_{\mu} P(O_{training}|\mu)模型的参数是指构成μ的πi,aij,bj(k)。本文…

wordpress 网站费用怎么做淘宝卷网站

随着技术的发展,人工智能的时代离我们越来越近,在人工智能的影响下许多传统行业开始向智能化方向转型,其中最明显的就是电话营销方面的工作。为了减轻人工销售负担出现了一个电销机器人系统,每天能拨打3000通电话,最高…

织梦可以做论坛网站吗自己制作的网站

freemodbus的官方介绍和下载入口,官方仓库链接:https://github.com/cwalter-at/freemodbus modbus自己实现的话往往是有选择的支持几条指令,像断帧和异常处理可能是完全不处理的,用freemodbus实现的话要简单很多,可移植…

网站运营维护合同商务网站建设与维护 ppt

什么是SLAM? SLAM,即同时定位与地图构建技术,SLAM可以让机器人、无人机和其他自动化系统能够在未知环境中同时进行自我定位和环境映射。 为什么是NeRF-Based SLAM? 传统CG将输入图像重新投影再融合到新的视图摄像机中&#xff0c…

网站服务器如何搭建基于构件的软件开发流程

特点 1.只有append操作2.支持子切片3.内存共享问题 1.只有append操作 不支持随机增删 2.支持子切片 数组和切片都可以通过[start:end] 的形式 来获取子切片: 1.arr[start:end],获得[start,end)之间的元素。 2.arr[:end],获得[0,end)之间的元素。 3.arr[start:],获得[start,l…

平面设计手绘网站中国字幕组回怼韩国媒体

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件🔥,更新AIGC的最新动态,生成相应的魔法简报,节省阅读时间👻 🔥资讯预览 YaRN方法:无需微调,高效扩展语言模型上下文窗口 蚂蚁…

河南和城乡建设厅网站内装设计

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.使用__slots__2. property3.多重继承 4.定制类5.枚举类6.错误处理7.调试8. 文档测试9.单元测试10. 文件读写11. StringIO和BytesIO12. 操作文件和目录13.序列化14…

有好看图片的软件网站模板下载百度搜索提交入口

2024.4.8 题目来源我的题解方法一 去重排序滑动窗口 题目来源 力扣每日一题;题序:2009 我的题解 方法一 去重排序滑动窗口 参考官方题解。 记数组 nums的长度为 n。经过若干次操作后,若数组变为连续的,那么数组的长度不会改变&…

网站做多久能盈利WordPress单栏二次元主题

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 个人博客链接:CH4SER的个人BLOG – Welcome To Ch4sers Blog DC-1 靶机下载地址:DC: 1 ~ VulnHub 0x01 信息收集 Nmap扫描目标主机,发现开…

做编程的 网站有哪些凡客软件

该课程全面解析数据产品和人工智能产品的开发与设计。学员将学习产品规划、数据分析以及AI技术应用,通过案例实践掌握产品开发流程,致力于帮助他们成功进入数据和人工智能产品领域。 课程大小:9.8G 课程下载:https://download.cs…