自 2005 年公开发布以来,Django 以其速度、安全性和流畅的开发体验成为最受欢迎的现代网络框架之一。这个基于 Python 的框架是 Instagram、Pinterest、Disqus 以及其他成功网站和应用程序的基础。
它还拥有许多用于开发全栈网络应用程序的组件。如果您需要额外的功能和特性,您可以探索 Django 丰富的第三方软件包开源生态系统,并将它们无缝地插入到您的项目中。
本文将探讨最好的 Django 软件包,为您的现代应用程序生产做好准备。
了解 Django 及其生态系统
Django 采用 MVT(模型-视图-模板)设计模式。其丰富直观的对象关系映射器(ORM)可与 Python 数据库交互,中间件和控制器视图系统可管理 HTTP 请求和响应循环,前端模板语言可渲染动态服务器端网页。Django 的内置表单模块可渲染和验证 HTML 表单提交,其软件包提供用户身份验证、缓存、自动电子邮件和静态文件管理功能。
发现顶级 Django 软件包
Python Packaging Index 上有 10,000 多个 Django 软件包可供选择。尽管像 Django Packages 这样的网站通过分类和度量标准帮助整理第三方软件包,但要确定哪些最适合您的项目仍然具有挑战性。让我们来看看一些有用、灵活且文档齐全的选项,以增强 Django 应用程序的功能。
要安装和使用第三方软件包,只需在项目的虚拟环境中运行 Python pip install
命令,然后在项目根目录下的 settings.py 文件中将软件包添加到 Django 项目的 INSTALLED_APPS
设置中即可。
Django 软件包与 Django 模块
在 Python 中,模块是共享命名空间的文件或文件集合,您可以将其导入到您的程序中。就像包含文件的文件夹一样,Django 框架由许多较小的模块组成,如表单、模型和视图。
Python 包是项目可以共享的模块捆绑包。Django 应用程序是一个独立的 Python 包,可以在 Django 项目间共享。所有 Django 项目都至少包含一个 Django 应用程序,其中包含用于构建 Web 应用程序的所有文件。
下文将介绍 15 个最佳 Django 软件包。
1. Django REST 框架(API)
Django REST 框架(DRF)可扩展 Django 项目,使其能够处理序列化的 JSON 数据(或 XML、YAML 等)。该框架直接与 Django ORM 相连接,以实现关系数据的表示,并提供特定于用户的身份验证和权限保护。
其内置的 Django 视图可生成 RESTful API 端点,以便在服务器上对项目数据执行创建、读取、更新和删除(CRUD)操作。它还包含一个可浏览的 API,可在网络浏览器中直接与 API 交互。
2. Django Haystack(搜索)
Django Haystack 在 Django 项目中集成了更强大的搜索引擎工具。它的模块化 Django 应用程序为您插入的任何搜索后端提供了一致的 API,因此您不会在项目的整个生命周期中被锁定在一个供应商上。
您可以为项目的所有模型数据创建独特的、经过微调的搜索索引,并利用其提供的 Django 视图为您的前端模板添加与后端无关的搜索功能。
3. Django 调试工具栏(Debug)
Django 的默认调试设置为运行时错误和异常提供了完整的 Python 堆栈跟踪,同时还提供了代表本地开发环境状态的元数据。不过,当你需要深入研究并攻击那些难以解决的隐秘 bug 时,可以在项目中安装 Django 调试工具栏,并在 Django 的设置中将 DEBUG
设置为 True
。
该软件包显示有关当前请求和响应周期的高度详细的实时数据,包括执行的 SQL 查询、提供的静态文件以及从项目缓存机制中存储和检索的数据。使用这些数据可以调试和优化应用程序的性能。
4. Django Sentry(监控)
将 Django 网站部署到生产环境时,必须关闭所有调试功能,以保护个人数据和应用程序的安全。但您仍然需要知道网站用户是否遇到运行时错误。
Sentry 是一款流行的开源解决方案,用于监控生产中的网站活动,为个人开发者和小型团队提供了慷慨的免费层级。使用其简单的界面,为您的 Django 项目添加先进的、高度可配置的监控、日志和跟踪功能,以避免生产问题。
5. Django Cors Headers(外部通讯)
当您的 Django 项目向独立的 Web 前端或托管在与您的服务器不同域上的其他 Web 应用程序提供数据时,您需要启用名为 “跨源资源共享(CORS)“的 Web 安全协议。
Django Cors Headers 软件包利用 Django 内置的中间件系统处理 HTTP 请求和响应,从而简化了这一过程。您可以指定允许通信的外部域列表。
6. Django Filter(筛选器/过滤器)
Django 应用程序通常允许用户根据一组映射到单个数据库字段或属性的参数请求数据。Django 筛选器软件包可帮助您避免在 Django 视图中为这些常见查询类型编写重复代码。
只需定义包含模型字段的 FilterSet
对象,即可通过 URL 参数或模板中自动生成的 HTML 表单进行查询。
7. Django Extensions(命令行)
您可以使用 Django 的命令行实用程序(称为管理命令)来运行您的开发服务器、创建数据库迁移并在数据库中运行它们、构建新的 Django 应用程序以及管理您的测试套件。
Django 扩展包通过附加功能增强了这些命令,例如通过 Django ORM 重建整个项目数据库的脚本、自动导入包含所有项目模型文件的交互式 shell,以及以可读格式导出用户的电子邮件地址。
8. Django Storages(存储)
本地开发时,Django 项目的媒体文件存储在本地文件夹中,该文件夹被配置为项目的媒体根目录。默认开发服务器会提供这些文件。
但是,在生产系统中,应通过单独的 HTTP 网络服务器(如 Nginx 或 Apache)或云存储服务(如 Amazon Simple Storage Service (S3) 或 DigitalOcean Spaces)来提供媒体文件。这种方法允许应用程序横向扩展,而无需复制包含媒体文件的本地文件夹。
Django Storages 软件包只需几行代码,就能将应用程序配置为使用这些云存储服务。
9. Django Redis(缓存)
复杂的数据库查询和模板渲染操作非常耗时。Django 内置的缓存框架通过存储这些操作的结果来提高网络应用程序的性能。您的应用程序可以直接从该缓存渲染大多数网络请求,从而缩短加载时间。
您可以将结果缓存在项目的数据库或文件系统中,也可以直接缓存在内存中。Django Redis 软件包可帮助配置流行的开源 Redis 作为项目的内存缓存后端。Redis 以其高性能、可扩展性和多功能性而著称,是许多应用程序的首选。
10. Django Guardian(权限)
以编程方式或通过 Django 管理器管理细粒度权限可能会很繁琐。Django Guardian 提供了简单直观的 API,只需几行代码即可管理每个对象的用户和组级权限。
11. Django Channels(通信)
大多数 Django 应用程序都在 HTTP 请求和响应周期内运行,通过整个网页刷新、支持 AJAX 的前端技术(如 jQuery、htmx 或 Hotwire)或框架(如 React 或 Vue)为用户加载内容。然而,网络套接字、MQTT、聊天和物联网(IoT)协议等实时功能需要与服务器建立开放连接。
Django 通道为各种同步和异步通信提供了便利。例如,您可以为网站管理员设置一个即时聊天服务器,让他们直接与客户交流。
12. Django Celery(任务)
Celery 是一种流行的开源任务队列,用于调度和运行耗时过长、不可预测或资源密集型的应用程序进程,通常的 HTTP 请求和响应周期无法处理这些进程。它可以触发进程向用户自动发送电子邮件、处理大型文本和媒体文件、搜索网页、处理第三方 API 调用、分析数据和生成报告。
它的界面可让您直接在 Django 项目代码中定义 Celery 任务,并在特定时间或周期性间隔内安排这些任务。
13. Django Allauth(认证)
虽然 Django 的全功能身份验证系统可以帮助管理项目的用户,但它并不内置启用社交登录的支持。使用社交和本地身份验证方法拼凑系统会给 Django 项目带来复杂性和重复逻辑。
值得庆幸的是,Django Allauth 软件包为您处理了这种复杂性,因此您只需稍加配置,就能在支持基于密码的本地登录的同时,支持所有社交身份验证提供商。
14. Wagtail CMS(内容管理)
您可以使用自动生成的管理界面为 Django 项目创建自己的自定义内容管理系统(CMS),而 Wagtail CMS 软件包则提供高度可定制的页面模型。其独特的混合内容方法利用 Django 的全部功能来构建内容丰富的网站。
Wagtail 就像用 Python 编写的 PHP WordPress,但它对开发人员的控制和定制程度使其与其他 CMS 区别开来。该软件包是 NASA、Google、Mozilla 和 NHS 等许多著名组织的首选 CMS。
15. Django Compressor(压缩)
在浏览器中加载大型静态文件会成为 Django 项目的性能瓶颈。Django Compressor 可以轻松压缩 Django 项目中各种形式的静态资产。
其模板标签适用于内联和链接文件,您还可以配置 Django Compressor 与项目的缓存机制配合使用,以实现自动再生和永久缓存生成输出。
小结
Django 的全功能网络框架提供了大量工具来构建应用程序。您可以在充满活力的第三方 Django 软件包生态系统中找到所需的附加功能。模块化的 Django 应用程序和 Python 软件包系统可让您随着项目的增长添加功能。使用本文中提到的久经考验的开源资源可以节省时间和精力。
评论留言