8个能提高Django开发效率的Python包
Django开发人员,我们将在这个月的Python专栏中专门讨论一些对您有帮助的包。这些是我们最喜欢的Django库,能够帮助我们节省时间,减少模板代码,简化我们的工作流程。这里介绍了六个Django应用程序包和两个Django的REST框架包,当我们说这些包几乎出现在我们工作的每个项目中时,一点也没有夸张。
但是在此之前,你可以先看看我们之前写的有关如何让Django 管理更加安全的技巧,以及一篇关于5个最喜欢的开源Django包的文章。
节省时间的利器:django-extensions
Django-extensions是一个非常受欢迎的Django包,其中包含许多有用的工具,比如下面列出的这些管理命令:
- shell_plus将启动Django shell,并保证所有数据库模型都已被加载。不再需要从几个不同的应用程序中导入数据,来测试一个复杂的关系!
- clean_pyc命令会将项目目录中所有位置的.pyc项目删除。
- create_template_tags用于在您指定的应用程序中创建一个模板标签目录结构。
- describe_form将显示模型的表单定义,然后您可以将其复制/粘贴到forms.py中。(注意,这将生成一个普通的Django表单,而不是一个模型表单。)
- notes命令可以在整个项目中显示所有带有TODO、FIXME等内容的注释。
Django-extensions中还包含一些有用的抽象基类,可用于您自己的模型中。在创建模型时你可以从这些基类继承:
- TimeStampedModel:这个基类包括了创建和修改的字段,以及一个可以自动更新这些字段的save()方法。
- ActivatorModel:如果您的模型需要status、activate_date和deactivate_date等字段,请使用这个基类。它附带了一个启用.active()和.inactive()查询集的管理器。
- TitleDescriptionModel和TitleSlugDescriptionModel:这两个模型包含了标题和描述字段,而后者还包含一个slug字段。slug字段将根据标题字段自动填充。
Django-extensions还有更多你可能会发现在项目中非常有用的功能,浏览一下它的文档吧!
12要素app设置:django-environ
Django-environ允许您使用12要素应用程序方法来管理Django项目中的设置。它会收集其他的库,包括envparse和honcho。安装完django- environment之后,将在项目的根目录中创建一个.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模型添加了对有限状态机的支持。如果你在运营一个新闻网站,需要撰写、编辑和发表文章,django-fsm可以帮助你定义这些状态,并管理从一个状态转移到另一个状态的规则和限制。
Django-fsm提供了一个FSMField,用于定义模型实例状态的model属性。然后,您可以使用django-fsm的@transition装饰器来定义将模型实例从一种状态移动到另一种状态的方法,并处理该转换带来的任何副作用。
虽然Django -fsm的文档也很少,但是了解Django中的Workflows(States)是一个基础,它有助于理解有限状态机和Django -fsm。
联系表格: #django-contact-form
在网站上,联系表格是一个经常会被需要的东西。但你不需要自己编写所有的样板代码——使用django-contact-form在几分钟内就可以设置好自己的代码。它附带一个可选的垃圾邮件过滤联系人表单类(以及一个常规的非过滤类)和一个ContactFormView基类,其中包含可以覆盖或自定义的方法,它会引导您浏览创建表单所需的工作模板。
注册和用户认证:django-allauth
Django-allauth是一款应用程序,它提供了用户注册、登录、重置密码以及通过GitHub或Twitter等外部网站验证用户身份的视图、表单和url。它支持使用电子邮件来进行用户名身份验证,并且有大量的文档记录。当你第一次使用它的时候,设置起来可能会有点混乱;请在自定义设置时仔细阅读安装说明,以确保使用启用特定功能所需的所有设置。
支持Django REST框架来处理用户身份验证:django-rest-auth
如果您的Django开发需要编写API,那么您可能正在使用Django REST 框架(DRF)。如果您正在使用DRF,您就应该了解下django-rest-auth,这是一个支持端点进行用户注册、登录/注销、密码重置和社交媒体身份验证的包(需要添加django-allauth,它可以很好地与django-rest-auth一起工作)。
可视化的Django REST 框架API:django-rest-swagger
Django REST Swagger提供了一个功能丰富的用户界面,用于与Django REST 框架API进行交互。一旦你安装了Django REST stawk并将其添加到已安装的应用程序中之后,你就可以将stawk视图和URL模式添加到你的urls.py文件中去;其余部分将在API的文档字符串中被处理。