Django是一个 "包含电池 "的网络框架,但它真正的闪光点在于其强大的第三方软件包的生态系统,这些软件包为框架增加了额外的功能。目前有将近4000个可用的软件包,所有这些都可以在可爱的Django软件包网站上看到。然而,浏览所有这些包可能会让人不知所措。
awesome-django repo列出了许多流行的第三方软件包,还有一篇关于10个最常用的Django软件包的单独帖子。在Django官方论坛上,围绕五大第三方软件包的争论仍然很激烈。
但如果你对一个最受欢迎的列表感兴趣,那就来看看吧。这些是一些最好的和最受欢迎的Django第三方软件包,我几乎在每个新项目中都会用到它们。
- Django REST Framework (DRF)
Django REST Framework (DRF)使得从头开始创建一个REST API或在现有的Django网站上添加一个API变得容易。它特意模仿了许多Django的惯例,并提供了强大的序列化功能,因此你可以按照你的选择来格式化你的数据。一个庞大的社区积极地维护着这个软件包,并拥有自己的相关第三方软件包的生态系统。
大多数Django开发者,如果被迫只选择一个第三方软件包,会选择DRF。它就是这么重要。而且它也是迄今为止下载量最大的Django第三方软件包。
- django-debug-toolbar
django-debug-toolbar几乎包含在每个Django项目的本地开发中。它有助于调试Django应用程序,并带有一套可配置的面板,用于检查网站的各个领域,包括SQL查询、请求和响应,以及一般的性能洞察力。这个软件包从Django诞生之初就已经存在,是现代django开发的一个支柱。
- django-extensions
这是对Django有用的真正的瑞士军表。有一个很长的命令扩展列表,但特别喜欢的是shell_plus,用于在python shell中自动加载数据库模型,以及runserver_plus,用于改进由Werkzeug驱动的本地网络服务器。
- django-CORS-headers
如果你正在用Django构建一个API,你需要一种方法来为响应添加跨源资源共享(CORS)头信息。这个包可以无缝、优雅地处理这个问题。
- django-allauth
Django的内置认证系统很强大,但django-allauth将其提升到了另一个层次。它为Django的注册默认值增加了许多改进,包括社交认证、只用电子邮件登录以及更多的功能。
- Wagtail
Wagtail是一个建立在Django上的内容管理系统,提供了灵活性和出色的用户体验。如果你需要一个Python CMS,Wagtail是个不错的选择。它有自己的Wagtail第三方软件包网站、会议和一个由Torchbox的开发团队领导的奇妙社区。
- django-filter
一个改进的方法来过滤基于用户选择的Django QuerySets。它还强大地支持向Django REST框架添加过滤器。
- django-storages
在Django的世界里,你是否在处理用户上传的内容(通常称为媒体)?django-storages支持多个存储供应商,包括Amazon S3、Azure Storage、Digital Ocean、Google Cloud Storage等。
- django-environ
秘密信息应该存储在环境变量中,而不是源代码中,特别是你的SECRET_KEY、任何API密钥、数据库凭证、支付信息等等。 django-environ是最流行的Django专用选项,尽管其他流行的方法包括Python-dotenv和environs。
- django-anymail
发送电子邮件是任何用户注册过程的核心部分,这个软件包与最流行的电子邮件服务提供商无缝协作,包括Amazon SES、MailGun、SendGrid等。
额外的第三方套餐很难仅仅停留在十个第三方软件包上。如果这个列表再长一点,它也会包括以下软件包:
- cookiecutter-django是一个用于快速启动生产就绪的Django项目的框架。
- django-compressor将JavaScript和CSS压缩到一个缓存文件中。
- django_coverage_plugin是一个添加coverage.py的插件,用于测量Django模板的执行情况。
- django-crispy-forms以一种优雅和DRY(Don't Repeat Yourself)的方式控制你的Django表单的渲染行为。它还为流行的CSS框架提供了模板包,如Tailwind、Bootstrap、Bulma、Foundation和Uni-form。
- dj-data-url使用DATABASE_URL环境变量来配置你的Django应用程序。
- django-redis除了现在Django中内置的Redis缓存后端支持外,还有一些额外的功能。
- django-restframework_simplejwt如果你想在你的Django API中使用JWTs。
- django-silk执行实时分析并检查HTTP请求和数据库查询。
- django-simple-history可以让你存储模型历史,并在管理网站上查看/恢复更改。 django-upgrade可以自动升级你的Django项目。
- django-waffle是Django中的一个功能翻转器,可以打开或关闭标志。
- django-q是一个任务队列,支持Redis, Disque等。
- djangox是一个带有电池的Django启动项目。
- model-bakery是一种创建测试用固定程序的智能方法。
- pytest-django简化了将pytest集成到Django应用中的过程。
- sorl-thumbnail提供了缩略图和图像大小的调整。
许多Python包是Django生态系统的关键部分,但也可以更广泛地使用。下面是一份Django项目中最常用的清单:
- black,一个不折不扣的Python代码格式化器。
- celery,一个分布式任务队列。
- coverage,用于测量代码覆盖率。
- factory-boy 改进了Python的夹具测试。
- flake8是一个用于执行风格指南的工具。
- gunicorn是一个生产型WSGI服务器。
- httpx 是下一代 HTTP 客户端,基本上是 requests 的更新版本。
- isort以Pythonic方式对你的导入进行排序。
- Pillow 是 Python 图像库。
- psycopg 是一个用于 Python 的 PostgreSQL 数据库适配器。
- pytest 是一个用于编写小型、模块化测试的框架。
- whitenoise 是 Django 在生产中托管静态文件的默认方式。