Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。
此前在讨论基于模板引擎的开发方式和 django-rest-framework 开发的异同时说过,django-rest-framework 开发和传统的开发方式没有什么不同,区别仅在于返回的数据格式不同而已。
Django REST Framework(以下简称DRF)是一个强大的框架,用于构建Web API。其中一个核心概念是序列化器,它允许我们将Django模型转换为序列化的格式(例如JSON,XML等),并反之亦然。
一般我们搞定接口,都是用restful API. rest 指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
sudo docker image pull delron/elasticsearch-ik:2.4.6-1.0
在Django REST Framework(DRF)中,序列化和反序列化是将Django模型转换为序列化的格式,以便我们可以将其发送到前端应用程序并从前端应用程序接收数据的过程。
前面用了两篇文章,分别用 Java + Spring Boot 和 Python + Flask 在本地构建了一套 RESTful API 服务
在Django REST Framework(DRF)中,序列化器是用于将Django模型转换为序列化格式(例如JSON)和将序列化格式转换为Django模型的组件。
在 django 博客教程中,我们使用了 django-haystack 和 Elasticsearch 进行文章内容的搜索。django-haystack 默认返回的搜索结果是一个类似于 django QuerySet 的对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework 的接口。当然解决方案也很简单,编写相应的序列化器将返回结果序列化就可以了。
在 Django博客教程(第二版)[1] 中,我们给博客内容增加了 Markdown 的支持,博客详情接口应该返回解析后的 HTML 内容。
工程已经创建好了,需要cd进工程里边,关键是manage.py在工程里边,我们就需要借用manage.py来进行其他的操作了。
REST框架提供了一个类APIViewView,APIView类在以下方面与常规类不同,它是继承于View类。
这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件的官方文档展开学习。日拱一卒,让我们开始吧!
在做其他事之前,我们会用virtualenv创建一个新的虚拟环境。这将确保我们的包配置与我们正在工作的其他项目完全隔离。
官网:https://www.djangoproject.com/ 博客:https://www.liujiangblog.com/ 本博客内容参考git:https://gitcode.net/mirrors/jackfrued/Python-100-Days 一些细节问题,大家可以查看git连接。本文主要的改变为把代码升级为django4.1版本。
DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)
我们的博客有一个侧边栏功能,分别列出博客文章的分类列表、标签列表、归档时间列表,通过点击侧边栏对应的条目,还可以进入相应的页面。例如点击某个分类,博客将跳转到该分类下全部文章列表页面。这些数据的展示都需要开发对应的接口,以便前端调用获取数据。
Github和Gitee代码同步更新: https://github.com/PythonWebProject/Django_Fresh_Ecommerce; https://gitee.com/Python_Web_Project/Django_Fresh_Ecommerce。
Serializer 用于获取复杂的 python 模型并将它们转换为 json。序列化程序还可用于在验证传入数据后将 json 反序列化回 Python 模型。
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用?
人们使用不同类型的设备连接到互联网并浏览网页。因此,需要从各种位置访问应用程序。对于传统网站,具有响应式UI通常就足够了,但更复杂的应用程序通常需要使用其他技术和体系结构。其中包括具有单独的REST后端和前端应用程序,可以实现为客户端Web应用程序,Progressive Web Apps(PWA)或本机移动应用程序。
在我们做任何其他事情之前,我们将使用venv创建一个新的虚拟环境。这将确保我们的软件包配置与我们正在进行的任何其他项目保持良好的隔离。
安装Django REST Framework(以下简称DRF)非常简单。您只需按照以下步骤操作:
Overthinking ruins you. Ruins the situation, twists it around, makes you worry and just makes everything much worse than it actually is.
LearnDjango/settings.py中添加 'rest_framework'
重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。
Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},]
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
导入:from rest_framework.serializers import Serializer
ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。
一个完整的项目,无论是个人的还是公司的,自动化的单元测试是必不可少,否则以后任何的功能改动将成为你的灾难。
DRF 框架,全称为 Django Rest Framework,是 Django 内置模块的扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目
博客:https://www.jianshu.com/u/9fcd71535294
Django REST Framework(DRF)提供了许多内置的序列化器,可以处理大多数序列化需求。但是,在某些情况下,内置的序列化器可能无法满足我们的要求。在这种情况下,我们可以使用自定义序列化器。
在本篇中,我们将为大家介绍如何基于Python构建一个以Django Rest框架为特征的博客应用程序API服务,并且该API服务支持CRUD (Create-Read-Update-Delete)功能。
现在前后端分离的架构设计越来越流行,业界甚至出现了API优先的趋势。显然API开发已经成为后端程序员的必备技能了,那作为一个测试,特别是把Django作为自己主要的自动化测试平台的测试开发,Django REST framework(DRF)这个REST API开发框架就是你不得不掌握的内容了。
在接下来的两章中,我们将构建一个Todo API后端,然后将其与React前端连接。 我们已经制作了第一个API,并回顾了HTTP和REST的抽象工作原理,但是您仍然可能还没有“完全”了解它们如何结合在一起。 在这两章的最后,您将学到。
这里想必学习了 django 的童鞋都应该能够知道通过 python 自带的包管理工具进行安装了吧
2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地。分享出来后,有同学觉得挺不错,希望能开源,本着“公司代码不要传到网上去,以免引起不必要麻烦”的原则,只能在家从头写一个,边重新梳理代码边温习巩固知识点,以学习交流为目的,定义为“学习版”。
花下猫语:如果你还不知道 FastAPI 是什么/有多好,请先看看我之前转载的 这篇文章,然后再阅读本文。今天分享的是一篇译文,译自 FastAPI 的官方文档,作者主要是将它与其它框架/库作了对比,介绍了 FastAPI 从它们身上吸收的一些亮点。阅读本文可以加深对 FastAPI 的理解,开阔对相关库的认知,更能知道优秀的开发者是如何从其它项目中吸收养分的。阅读愉快!
在日常开发中,会从别的API获取数据或者自己写API提供数据,数据格式一般都是采用JSON格式。这期间就会涉及两个专业术语:
一旦我们使用了视图集,并实现了 HTTP 请求对应的 action 方法(对应规则的说明见 使用视图集简化代码),将其在路由器中注册后,django-restframework 自动会自动为我们生成对应的 API 接口。
REST framework中的serializers与Django的Form和ModelForm类非常像。我们提供了一个Serializer类,它为你提供了强大的通用方法来控制响应的输出,
领取专属 10元无门槛券
手把手带您无忧上云