如何利用 Django 进行 API 开发(上)

简介: Django REST Framework 与 Django Web 框架协同工作以创建 Web API。 我们不能仅使用 Django Rest Framework 来构建 Web API 。 在安装和配置 Django 本身之后,必须始终将其添加到项目中。

Django REST Framework 与 Django Web 框架协同工作以创建 Web API。 我们不能仅使用 Django Rest Framework 来构建 Web API 。 在安装和配置 Django 本身之后,必须始终将其添加到项目中。


在本章中,我们将回顾传统 Django 和 Django REST Framework 之间的异同。 最重要的一点是,Django 创建的网站包含网页,而 Django REST Framework 创建的 Web API 是 URL 端点的集合,这些 URL 端点包含返回 JSON 的可用 HTTP 动词。


为了说明这些概念,我们将使用传统的 Django 建立一个基本的 Library 网站,然后使用 Django REST Framework 将其扩展为 Web API 。

Django 快速开发

首先,我们需要在计算机上有一个专用目录来存储代码。 它可以放置在任何地方,但为了方便起见,如果您使用的是 Mac,我们可以将其放在“桌面”文件夹中。

$ cd ~/Desktop
$ mkdir code && cd code


该代码文件夹将成为本书所有代码的位置。 下一步是为我们的库站点创建一个专用目录,通过 Pipenv 安装 Django ,然后使用 shell 命令进入虚拟环境。 您应该始终为每个新的 Python 项目使用专用的虚拟环境。

$ mkdir library && cd library
$ pipenv install django==2.2.6
$ pipenv shell
(library) $


Pipenv 在当前目录中创建一个 Pipfile 和一个 Pipfile.lock 。 命令行前括号中的(library)表明我们的虚拟环境处于活动状态。


传统的 Django 网站由一个项目 project 和一个(或多个)代表不同功能的应用 apps 组成。 让我们使用 startproject 命令创建一个新项目。 别忘了加上句号。 最后将代码安装在当前目录中。 如果不包括句点,则 Django 默认会创建一个附加目录。

(library)$ django-admin startproject library_project .


Django 会自动为我们生成一个新项目,我们可以使用 tree 命令看到它。 (注意:如果在 Mac 上无法使用 tree ,请使用 Homebrew :brew install tree 安装。)

(library) $ tree .
├── Pipfile
├── Pipfile.lock
├── library_project
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py


这些文件具有以下定义:


  • __init__.py是将目录视为软件包的 Python 方法; 它是空的
  • settings.py包含我们项目的所有配置
  • urls.py控制顶级 URL 路由
  • wsgi.py代表 Web 服务器网关界面,可帮助 Django 服务于最终网页
  • manage.py执行各种 Django 命令,例如运行本地 Web 服务器或创建新应用。


运行 migrate 将数据库与 Django 的默认设置同步,然后启动本地 Django Web 服务器。

(library) $ python manage.py migrate
(library) $ python manage.py runserver


打开 Web 浏览器,访问 http://127.0.0.1:8000/ 以确认我们的项目已成功安装。


网络异常,图片无法展示
|

第一个 app

典型的下一步是开始添加代表功能不同区域的应用程序。 一个 Django 项目可以支持多个应用程序。


通过键入 Control + c 停止本地服务器,然后创建一个 books 应用程序。

(library) $ python manage.py startapp books


现在再查看一下 Django 生成了什么文件。

.
├── Pipfile
├── Pipfile.lock
├── books
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── library_project
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py


每个应用程序都有一个 __init__.py 文件,将其标识为 Python 软件包。 创建了 6 个新文件:


  • admin.py 是内置 Django Admin 应用程序的配置文件
  • apps.py 是应用程序本身的配置文件
  • migrations/ 目录存储用于数据库更改的迁移文件
  • models.py 是我们定义数据库模型的地方
  • tests.py 用于我们的应用程序特定测试
  • views.py 是我们处理 Web 应用程序的请求/响应逻辑的地方


通常,开发人员还会在每个应用程序内创建一个 urls.py 文件进行路由。


让我们构建文件,以便我们的图书馆项目列出首页上的所有书籍。 将您选择的文本编辑器打开到 settings.py 文件。 第一步是将新应用添加到我们的 INSTALLED_APPS 配置中。 我们总是在底部添加新应用,因为 Django 会按顺序读取它们,并且我们希望内置的核心 Django 应用(例如 admin 和 auth )在加载我们的应用之前已经被加载。

# library_project/settings.py
INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles',
    # Local
    'books.apps.BooksConfig', # new
]


然后运行迁移以使我们的数据库与更改同步。

(library) $ python manage.py migrate


传统 Django 中的每个网页都需要多个文件:视图,URL 和模板。 但是首先我们需要一个数据库模型,所以让我们从这里开始。

Models

在您的文本编辑器中,打开文件 book/models.py 并进行如下更新:

# books/models.py
from django.db import models
class Book(models.Model):
    title = models.CharField(max_length=250)
    subtitle = models.CharField(max_length=250) 
    author = models.CharField(max_length=100) 
    isbn = models.CharField(max_length=13)
    def __str__(self): 
        return self.title


这是一个基本的 Django 模型,我们在最上面一行从 Django 导入模型,然后创建一个扩展它的 Book 类。 有四个字段:标题,副标题,作者和 isbn 。 我们还包括 __str__ 方法,以便稍后在管理员中显示书名。


请注意,ISBN 是分配给每本出版书籍的唯一的 13 个字符的标识符。


由于我们创建了一个新的数据库模型,因此我们需要创建一个迁移文件来进行处理。 指定应用名称是可选的,但建议在此处使用。 我们可以只键入 python manage.py makemigrations,但是如果有多个应用程序进行了数据库更改,那么这两个应用程序都将被添加到迁移文件中,这使得将来的调试更加困难。 保持您的迁移文件尽可能具体。


然后运行迁移以更新我们的数据库。

(library) $ python manage.py makemigrations books 
(library) $ python manage.py migrate


到目前为止,一切都很好。

相关文章
|
12天前
|
JSON 缓存 JavaScript
探索后端开发之巅:构建高效API的秘诀
【8月更文挑战第31天】本文将引导你穿越后端开发的迷宫,解锁构建高效API的秘密。从基础架构到代码实践,我们将深入浅出地探讨如何打造既快速又稳定的后端服务。通过具体案例和代码示例,你将学会如何优化你的API设计,提升性能,并确保可扩展性与安全性。无论你是新手还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
117 51
|
2天前
|
JavaScript 测试技术 API
探索后端开发:构建高效API的艺术
【9月更文挑战第8天】本文旨在揭示后端开发中一个经常被忽视的领域——API设计。通过深入浅出的方式,我们将探讨如何构建一个既高效又易于维护的API。文章将涵盖设计原则、最佳实践以及一些常见的陷阱和解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在后端开发的道路上更进一步。
|
3天前
|
前端开发 API 开发者
深入浅出:后端开发中的API设计艺术
在数字化时代的浪潮中,后端开发如同搭建一座座数据桥梁,连接着用户与服务的无限可能。而API设计,则是这座桥梁的精髓所在。本文将带领读者领略API设计的艺术,从基础原则到进阶实践,探索如何打造高效、稳定且易于使用的后端接口。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高质量后端开发的大门。
|
12天前
|
API 数据处理 网络架构
后端开发中的API设计艺术
在数字世界的构建中,API(应用程序编程接口)是连接不同软件组件的桥梁。良好的API设计不仅提升了开发效率,还增强了系统的可维护性与扩展性。本文将深入探讨如何打造一个既简洁又强大的后端API,涵盖从概念规划到实际实施的各个阶段,并分享一些行业最佳实践。
|
2天前
|
存储 安全 API
探索后端开发:构建高效API的艺术
【9月更文挑战第9天】在数字时代的浪潮中,后端开发如同一位默默无闻的艺术家,精心雕琢着每一个数据交互的细节。本文将带你走进后端的世界,从基础概念到实战技巧,一起学习如何打造高效、稳定且易于扩展的API。我们将通过深入浅出的方式,探讨后端开发的哲学与实践,让你在编码之旅中,找到属于自己的节奏和和谐。让我们一起跟随代码的脚步,解锁后端开发的无限可能。
|
6天前
|
XML JSON 缓存
探索后端开发中的RESTful API设计原则
【9月更文挑战第5天】在数字化时代的浪潮中,后端开发扮演着支撑整个互联网世界运行的基石角色。而作为连接前端与后端桥梁的RESTful API,其设计质量直接影响到应用的性能和用户体验。本文将深入探讨RESTful API的设计原则,通过浅显易懂的语言和实际代码示例,引导读者理解如何构建高效、易于维护的API。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考。
|
6天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
27 2
|
11天前
|
JSON JavaScript 前端开发
深入浅出后端开发:从零开始构建RESTful API
【8月更文挑战第31天】在数字化时代,后端开发是构建现代网络应用的心脏。本文将引导初学者理解RESTful API的核心概念,并通过实际代码示例,展示如何从无到有实现一个简易的RESTful服务。我们将探索请求处理、数据存储和API设计的基本原理,确保你能够掌握这一技术并应用于未来的项目。
|
13天前
|
存储 安全 API
后端开发中的API设计艺术
在数字化时代的浪潮下,后端开发不仅仅是代码的堆砌,更是一种艺术的体现。API设计作为后端开发的精髓,它的优雅与否直接关系到软件产品的性能与用户体验。本文将通过深入浅出的方式,带领读者领略API设计的魅力所在,从基本原则到实用技巧,再到安全性考量,全方位剖析如何打造一个既高效又安全的API。无论你是初学者还是资深开发者,这篇文章都将为你的后端开发之路提供宝贵的启示。
|
14天前
|
安全 API 数据处理
后端开发中的API设计哲学:简洁、高效与安全
【8月更文挑战第29天】 在后端开发的广阔天地中,API(应用程序编程接口)的设计如同编织一张无形的网,连接着数据的海洋与应用的大陆。本文将深入探讨如何打造一个既简洁又高效的API,同时不忘筑牢安全的防线。我们将从API设计的基本原则出发,逐步剖析如何通过合理的结构设计、有效的数据处理和严格的安全措施来提升API的性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的视角和实用的技巧,帮助你构建出更优秀的后端服务。