本月的Python专栏介绍了一些Django包,它们可以使您的工作以及您的个人或业余项目受益。Django开发者,在本月的Python专栏中,我们介绍了一些可以为您提供帮助的包。这些包是我们最喜欢的Django库,它们节省了开发时间,减少了样板代码,并且通常使我们的生活更轻松。我们有六个用于Django应用程序的包和两个用于Django的REST框架的包。这些包几乎用于我们所有的项目,真的,不是开玩笑。但在您继续阅读之前,请查看我们关于让您的Django管理员更安全的一些技巧,以及这篇关于5个最佳开源Django包的文章。有用又省时的工具集:django-extensionsdjango-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:这两个model包括title和description字段,description字段还包括slug,slug是根据title字段自动生成的。django-extensions还有很多可能对你的项目有帮助的功能,所以去浏览它的文档吧!十二要素应用配置:django-environ在Django项目配置方面,django-environ提供了一种符合十二要素应用方法论的管理方式。它是其他库的集合,包括envparse和honcho等。安装django-environ后,在项目的根目录下创建一个.env文件,使用这个文件定义随环境变化的变量,或者需要修改的变量保密。(如APIkey,是否开启调试,数据库的URL等)然后,在项目的settings.py中引入environ,并参考中的例子设置environ.PATH()和environ.Env()官方文档。您可以传递env('VARIABLE_NAME')来获取.env文件中定义的变量值。创建出色的管理命令:django-clickdjango-click基于Click,(我们之前推荐过Click...两次),它有助于编写Django管理命令。这个库的文档不多,但是在代码仓库里有一个存放测试命令的目录,很有参考价值。django-click的基本HelloWorld命令是这样写的:secho(f'Hello,{name}')在命令行中调用,这样执行即可:>>./manage.pyhelloLaceyHello,Laceyhandlesfinitestatemachines:django-fsmdjango-fsmaddsfinitetotheDjango模型状态机支持。如果你管理一个新闻网站,想使用文章的“写作”、“编辑”、“已发表”等状态,django-fsm可以帮你定义这些状态,管理状态变化的规则和限制。Django-fsm为模型提供了FSMField字段,用于定义模型实例的状态。使用django-fsm的@transition修饰符,可以定义状态更改的方法并处理状态更改的任何副作用。虽然django-fsm文档很简单,但这个GitHubGistWorkflow(state)inDjango很好地介绍了有限状态机和django-fsm。联系表:#django-contact-form联系表可以说是网站的标准配置了。但是,无需自己编写所有样板代码,django-contact-form可以在几分钟内完成。它带有一个可选的垃圾邮件过滤表单类(还有一个不过滤的普通表单类)和一个ContactFormView基类,其方法可以被覆盖或自定义。它会引导您创建模板以使表单正常工作。用户注册和认证:django-allauthdjango-allauth是一个Django应用程序,提供用户注册、登录/注销、密码重置和第三方用户认证(如GitHub或Twitter)的视图、表单和URL,并支持电子邮件地址用作用户名的身份验证方法,并且有据可查。第一次使用时,它的配置可能有点混乱;请仔细阅读安装说明,并在自定义配置时小心谨慎,以确保您使用启用某个功能的所有配置。为DjangoREST框架处理用户身份验证:django-rest-auth如果Django开发涉及向外部提供API,您很可能会使用DjangoRESTFramework(DRF)。如果您正在使用DRF,那么您应该尝试django-rest-auth,它为用户注册、登录/注销、密码重置和社交媒体身份验证提供端点(通过添加对django-allauth的支持,这两个包可以很好地协同工作).DjangoRESTFrameworkAPI可视化:django-rest-swaggerDjangoRESTSwagger提供了一个功能丰富的用户界面,用于与DjangoRESTFrameworkAPI进行交互。你只需要安装DjangoRESTSwagger,将其添加到Django项目已安装的应用程序中,然后在urls.py中添加Swagger的视图和URL模式,剩下的由API的docstring来处理。API的用户界面根据应用的维度展示了所有端点和可用的方法,并列出了这些端点的可用操作,并提供了与API交互的功能(如添加/删除/获取记录)。django-rest-swagger从API视图中的文档字符串为每个端点生成文档。通过这种方式,为您的项目创建了一个API文档,这对您、前端开发人员和用户都有用。
