48

8个能够提高Django开发效率的Python包

 5 years ago
source link: http://developer.51cto.com/art/201809/584060.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【51CTO.com快译】这里介绍了一些有关Django的Python包,这些包将有益于您的工作、个人或业余项目。

ZvQBNjU.png!web

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项目中的设置。它会收集其他的库,包括 envparsehoncho 。安装完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的文档字符串中被处理。

nuAZRnN.png!web

您的API的用户界面将包含您应用的所有端点和可用方法。它还将列出这些端点的可用操作,并使您能够与API进行交互(例如,添加/删除/获取记录)。它使用API视图中的docstring来为每个端点生成文档,为项目创建一组对您、前端开发人员和用户有用的API文档。

原文标题:8 Python packages that will simplify your life with Django,作者:Jeff Triplett

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【责任编辑:庞桂玉 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK