[译]Django项目最常用的20个包

简介: [译]Django项目最常用的20个包

[译]Django项目最常用的20个包

原文:《20 Django Packages That I Use in Every Project》

https://learndjango.com/tutorials/20-django-packages-i-use-every-project

Django是一个自带电池(batteries-included)的Web框架,内置的组件涵盖了Web开发的大部分需求。但Django也有丰富的第三方包提供额外的功能。

这篇文章介绍了我在每个Django项目中都使用的20个包。它们为我节省了大量时间,希望对你也有帮助。

DRF (Django REST Framework)

有了DRF,你可以快速将现有的Django site转换为RESTful API。DRF非常容易上手,DRF的接口和Django的非常一致。如果只能用一个第三方包,我会选择DRF。

django-ninjia是一个类似的包,具有高性能和异步就绪性,但需要类型提示。

django-debug-toolbar

虽然Django自带了Debug模式,但 django-debug-toolbar 将其提升到一个新的水平,提供了一组可配置的面板来检查网站的所有区域,包括 SQL 查询、请求和响应,以及一般性能分析。

这个包从 Django 开始就已经存在了,是现代 Django 开发的中流砥柱。

django-allauth

Django 的内置身份验证系统很强大,但django-allauth将其提升到了另一个层次。它对 Django 的注册默认值进行了许多改进,包括社交身份验证、仅电子邮件登录等。我在每个 Django 项目中都使用它。

django-extensions

django的补充,提供了一些命令扩展。我特别喜欢shell_plus,可以在 Python shell 中自动加载数据库模型,以及 runserver_plus 用于由 Werkzeug 提供支持的改进的本地 Web 服务器。

django-cors-headers

如果要使用 Django 构建 API,则需要一种方法将跨域资源共享(CORS, Cross-Origin Resource Sharing)标头添加到响应中。此软件包可以无缝而优雅地处理该问题。

environs

环境变量是现代 Web 开发的必要部分,允许开发人员保留私有信息,例如SECRET_KEY, API 密钥、数据库凭据、付款信息等。

我喜欢用environs来处理环境变量。django-environpython-dotenv也是常见的选择。

django-anymail

发送电子邮件可能很棘手,但它是任何用户注册过程或通知的核心部分。该软件包通过与最流行的电子邮件服务提供商(包括 Amazon SES、MailGun、SendGrid 等)无缝集成,使其变得容易。

django-filter

一种改进的基于用户选择过滤Django QuerySet的方法。支持DRF。

django-storages

你是否在处理用户上传的内容(在Django中通常称为“media”)?或者为静态文件使用专用的CDN(如 S3)? django-storages 为您提供了对多个存储提供商的支持,包括 Amazon S3、Azure Storage、Digital Ocean、Google Cloud Storage 等。

Pillow

Pillow是一个图像处理的库。

如果你正在处理图像——用户个人资料图片、图像上传、缩略图等——那么你可能需要添加 Pillow,它与 Django 的 ImageField 一起工作。

django-crispy-forms

以优雅和 DRY(不要重复自己)的方式控制 Django 表单的渲染行为。它还附带了流行的 CSS 框架的模板包,如 Tailwind、Bootstrap、Bulma、Foundation 和 Uni-form。

django-q2

任务队列管理耗时或资源密集型的后台任务,例如发送电子邮件、处理数据、长时间运行的任务等。

虽然 Celery 是一个流行的选择,但我更喜欢django-q2,因为它更简单,与 Django 更紧密地集成,并使用 Django ORM 来调度任务和存储结果。

Wagtail CMS

如果您想要一个用 Python 构建的可定制内容管理系统(CMS),Wagtail 是一个很好的选择。Wagtail 由 Torchbox 的开发团队维护,拥有自己的第三方软件包、会议和提供新功能和版本的大型社区的生态系统。

pytest-django

虽然 Django 内置了测试工具,但 pytest 和 pytest-django 插件在社区中被广泛使用。

pytest-cov

Coverage是在项目中测量代码覆盖率的广泛使用的工具,而 pytest-cov 插件与 pytest 无缝集成。

model-bakery

Model Bakery 提供了一种在 Django 中创建用于测试的固定装置(fixture)的智能方法。您可以用一行代码创建许多对象,从而节省大量开发人员的时间。

whitenoise

网站需要一种方法来提供静态文件,在 Python 生态系统中,默认选择是 WhiteNoise。通过几行配置,WhiteNoise 将您的静态文件转换为一个独立的单元,可以部署在任何地方,而无需依赖 nginx、Amazon S3 或任何其他外部服务。

gunicorn

gunicorn 是最受欢迎的基于 WSGI 的 Python 服务器之一,它易于使用和上手,但有足够的配置选项来在必要时进行调整。它足够简单,可以在几分钟内完成配置,但功能强大,足以让 Instagram 使用,即使他们可以选择其他 WSGI 选项,例如 uwsgiApache/mod_wsgi

psycopg

如果你正在使用 PostgreSQL 数据库——许多 Django 开发人员都这样做——那么 psycopg 这就是你生产所需的数据库适配器。 psycopg 最近更新到版本 3.0,并且比以往任何时候都快。

Black

Black 是一个 Python 代码格式化程序,它或多或少是 Django 社区中的默认格式化程序。将其集成到您的工作流程中将节省时间并为您和您的同事生成更具可读性的代码。

结语

我几乎在每个新项目中都会使用这 20 个第三方软件包,但还有更多需要探索的地方。如果你想阅读更多内容,请查看 Django官方论坛上的活跃讨论。

相关文章
|
1天前
|
前端开发 数据库 Python
Django入门全攻略:从零搭建你的第一个Web项目
Django入门全攻略:从零搭建你的第一个Web项目
|
10天前
|
前端开发 数据库 Python
Python Django项目下的分页和筛选查询
在Django中实现分页功能,视图函数通过`Paginator`处理数据,每页显示10条记录。URL配置支持带参数和不带参数的分页请求。前端模板使用for循环展示分页数据,包括商品信息和状态按钮,并利用分页组件导航。筛选查询视图根据GET请求的`state`参数过滤上架或下架产品,同样实现分页功能。前端添加状态选择下拉框,分页链接携带查询参数`state`确保筛选状态在翻页时保持。
|
12天前
|
人工智能 关系型数据库 Docker
【Django项目】 通过AI实现视频转文字
【Django项目】 通过AI实现视频转文字
|
13天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
13天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
15天前
|
缓存 JSON API
在django项目中使用装饰器管理路由
【6月更文挑战第12天】本文介绍了Python装饰器在API管理中的应用,包括用于延迟计算、缓存和转换函数的装饰器。实践中,以Django Rest Framework为例,演示了如何使用装饰器定义GET、POST、PUT和DELETE请求的视
15 1
|
16天前
|
Python
将Django项目从本地上传至宝塔服务器(踩坑记录)
将Django项目从本地上传至宝塔服务器(踩坑记录)
26 2
|
19天前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
116 4
|
21天前
|
数据采集 数据库 Python
为什么基于 Django 和 Scrapy 的项目需要 @sync_to_async 装饰器
通过使用 @sync_to_async 装饰器,我们可以在 Scrapy 的异步环境中高效地调用同步的 Django ORM 操作。这样可以避免阻塞事件循环,充分利用 Scrapy 的异步 I/O 优势,从而提升爬虫的性能和并发处理能力。在构建基于 Django 和 Scrapy 的项目时,理解并正确使用 @sync_to_async 是非常重要的,这将帮助你构建高效、健壮的应用程序。
|
21天前
|
前端开发 数据库 Python
Django项目之电商购物商城 -- 修改/删除收货地址/设置默认地址
Django项目之电商购物商城 -- 修改/删除收货地址/设置默认地址