[译]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 Packages 含有大量Django第三方包。
- Awesome Django 精选了一些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-environ
和 python-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 选项,例如 uwsgi
或Apache/mod_wsgi
。
psycopg
如果你正在使用 PostgreSQL 数据库——许多 Django 开发人员都这样做——那么 psycopg 这就是你生产所需的数据库适配器。 psycopg 最近更新到版本 3.0,并且比以往任何时候都快。
Black
Black 是一个 Python 代码格式化程序,它或多或少是 Django 社区中的默认格式化程序。将其集成到您的工作流程中将节省时间并为您和您的同事生成更具可读性的代码。
结语
我几乎在每个新项目中都会使用这 20 个第三方软件包,但还有更多需要探索的地方。如果你想阅读更多内容,请查看 Django官方论坛上的活跃讨论。