8 个 Python 包,让你的 Django 生活更轻松

本月的 Python 专栏着眼于 Django 包,它们将使你的工作、个人或副项目受益。
266 位读者喜欢这个。

Django 开发者们,我们本月的 Python 专栏专门介绍能帮助你们的包。 这些是我们最喜欢的 Django 库,可以节省时间、减少样板代码并总体上简化我们的生活。 我们有六个用于 Django 应用程序的包和两个用于 Django 的 REST Framework,并且我们毫不夸张地说,这些包几乎出现在我们工作的每个项目中。

但首先,请参阅我们关于如何使 Django Admin 更安全的技巧以及关于 5 个最喜欢的开源 Django 包的文章。

有用的省时工具的厨房水槽:django-extensions

Django-extensions 是一个最受欢迎的 Django 包,其中充满了有用的工具,例如这些管理命令

  • shell_plus 启动 Django shell,并预先加载所有数据库模型。 无需再从几个不同的应用程序导入以测试一个复杂的关系!
  • clean_pyc 从项目目录内的所有位置删除所有 .pyc 项目。
  • create_template_tags 在你指定的应用程序内创建模板标签目录结构。
  • describe_form 显示模型的表单定义,然后你可以将其复制/粘贴到 forms.py 中。(请注意,这会生成常规 Django 表单,而不是 ModelForm。)
  • notes 显示整个项目中包含 TODO、FIXME 等内容的评论。

Django-extensions 还包括有用的抽象基类,可用于你自己的模型中的常见模式。 创建模型时从这些基类继承以获得它们

  • TimeStampedModel:此基类包括字段 createdmodified 以及自动适当更新这些字段的 save() 方法。
  • ActivatorModel:如果你的模型需要 statusactivate_datedeactivate_date 等字段,请使用此基类。 它带有一个管理器,可以启用 .active().inactive() 查询集。
  • TitleDescriptionModelTitleSlugDescriptionModel:这些包括 titledescription 字段,后者还包括 slug 字段。 slug 字段将根据 title 字段自动填充。

Django-extensions 还有更多你可能在项目中觉得有用的功能,因此请浏览其 文档

12-factor-app 设置:django-environ

Django-environ 允许你使用 12-factor app 方法来管理 Django 项目中的设置。 它收集了其他库,包括 envparsehoncho。 安装 django-environ 后,在项目的根目录创建一个 .env 文件。 在该模块中定义可能在环境之间更改或应保持机密(例如 API 密钥、调试状态和数据库 URL)的任何设置变量。

然后,在项目的 settings.py 文件中,导入 environ 并根据示例设置 environ.PATH()environ.Env() 的变量。 使用 env('VARIABLE_NAME') 访问 .env 文件中定义的设置变量。

创建出色的管理命令:django-click

Django-click 基于 Click (我们之前已经推荐过... 两次),可以帮助你编写 Django 管理命令。 该库没有大量的文档,但它确实在其存储库中有一个测试命令目录,这些命令非常有用。 一个基本的 Hello World 命令如下所示

# app_name.management.commands.hello.py
import djclick as click

@click.command()
@click.argument('name')
def command(name):
    click.secho(f'Hello, {name}')

然后在命令行中运行

>> ./manage.py hello Lacey
Hello, Lacey

处理有限状态机:django-fsm

Django-fsm 为你的 Django 模型添加了对有限状态机的支持。 如果你运行一个新闻网站并且需要文章通过 Writing、Editing 和 Published 等状态进行处理,django-fsm 可以帮助你定义这些状态并管理从一个状态到另一个状态的规则和限制。

Django-fsm 提供了一个 FSMField,用于定义模型实例状态的模型属性。 然后,你可以使用 django-fsm 的 @transition 装饰器来定义将模型实例从一个状态移动到另一个状态的方法,并处理该转换中的任何副作用。

虽然 django-fsm 的文档很少,但 Django 中的工作流(状态)是一个要点,可以作为对有限状态机和 django-fsm 的绝佳介绍。

联系表格:#django-contact-form

联系表格是网站上的标准内容。 但是不要自己编写所有样板代码——使用 django-contact-form 在几分钟内设置你的表格。 它带有一个可选的垃圾邮件过滤联系表类(以及一个常规的非过滤类)和一个带有你可以覆盖或自定义的方法的 ContactFormView 基类,它会引导你完成创建使你的表单工作的所需模板。

注册和验证用户:django-allauth

Django-allauth 是一个应用程序,它提供用于注册用户、登录和注销用户、重置密码以及使用 GitHub 或 Twitter 等外部站点验证用户的视图、表单和 URL。 它支持电子邮件作为用户名验证,并且有大量的文档记录。 第一次使用它时可能会有些困惑; 仔细按照 安装说明 进行操作,并在自定义设置 时仔细阅读,以确保你正在使用启用特定功能所需的所有设置。

使用 Django REST Framework 处理用户身份验证:django-rest-auth

如果你的 Django 开发包括编写 API,你可能正在使用 Django REST Framework (DRF)。 如果你正在使用 DRF,你应该查看 django-rest-auth,它是一个为用户注册、登录/注销、密码重置和社交媒体身份验证启用端点的包(通过添加 django-allauth,它与 django-rest-auth 配合良好)。

可视化 Django REST Framework API:django-rest-swagger

Django REST Swagger 提供了一个功能丰富的用户界面,用于与你的 Django REST Framework API 交互。 安装 Django REST Swagger 并将其添加到已安装的应用程序后,将 Swagger 视图和 URL 模式添加到你的 urls.py 文件; 其余的都在你的 API 的文档字符串中处理。

Swagger screenshot

你的 API 的 UI 将包括你所有的端点和按应用程序分类的可用方法。 它还将列出这些端点的可用操作,并使你能够与 API 交互(例如,添加/删除/获取记录)。 它使用 API 视图中的文档字符串为每个端点生成文档,从而为你的项目创建一组 API 文档,这些文档对你、你的前端开发人员和你的用户都很有用。

User profile image.
Lacey Williams Henschel 是 REVSYS 的软件工程师,也是 DjangoCon US 的组织团队成员。 过去,她曾担任 DjangoCon US 的主席,组织过多次 Django Girls 研讨会,为 Treehouse 教授课程,并撰写有关技术活动的可访问性的文章。
User profile image.
Jeff Triplett 是一名开源开发人员,并且在 REVSYS 担任软件工程师、顾问和合伙人。 他是 Python 软件基金会的董事会成员。 他偶尔会在他的网站上写博客。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可授权。
© . All rights reserved.