本文介绍: Djangoextensions是 Django扩展应用,给django开发者提供了许多便捷的扩展工具(extensions),它提供了许多有用的工具命令行工具,帮助 Django 开发者更高效地进行开发调试。它的作用包括:- 提供了更多的Django命令比如导出数据库生成数据模型文档查看URL路由表等;- 提供了一些有用的Django插件比如shell_plus插件可以在Shell自动导入项目的所有模块

Djangoextensions是 Django扩展应用,给django开发者提供了许多便捷的扩展工具(extensions),它提供了许多有用的工具和命令行工具,帮助 Django 开发者更高效地进行开发调试。它的作用包括:

– 提供了更多的Django命令比如导出数据库生成数据模型文档查看URL路由表等;

– 提供了一些有用的Django插件,比如shell_plus插件可以在Shell自动导入项目的所有模块

– 提供了一些有用的Django工具,比如graph_models可以将项目的数据模型转换成UML图。

篇文章介绍包含哪些有用扩展以及它们的使用场景djangoextensions主要提供了三种扩展:命令扩展,字段扩展和模型扩展。

官方文档https://djangoextensions.readthedocs.io/en/latest/index.html

GitHubhttps://github.com/djangoextensions/djangoextensions

djangoextensions安装配置

使用pip安装pip install djangoextensions

加入settings.py中的INSTALLED_APPS

python manage.py help

[auth]

[contenttypes]

[django]

[sessions]

[staticfiles]

此时会多出来一项django_extensions

[django_extensions]

包含以下子命令

admin_generatorclean_pycclear_cachecompile_pyccreate_commandcreate_jobscreate_template_tags、delete_squashed_migrations、describe_formdrop_test_databasedumpscriptexport_emailsfind_templategenerate_passwordgenerate_secret_keygraph_modelslist_model_infolist_signalsmail_debugmanagestatemerge_model_instances、notes、pipcheckerprint_settingsprint_user_for_sessionraise_test_exceptionreset_dbreset_schemarunjobrunjobsrunprofileserverrunscriptrunserver_plusset_default_siteset_fake_emailsset_fake_passwordsshell_plusshow_template_tags、show_urls、sqlcreate、sqldiffsqldsnsync_s3、syncdata、unreferenced_filesupdate_permissions、validate_templates

在项目中准备以下环境信息

命令扩展

shell命令的扩展命令,运行Django shell的同时自动加载所有appmodels,并选择使用Python shell版本

每次进行Django项目调试时,首先需要打开python shell,再重新import每个model。如果安装djangoextensions, 使用python manage.py shell_plus命令打开一个加强版的django shell这个shell_plus自动载入项目中所有的model可以很方便的开始调试。

一句话可以展示当前项目所有定义urls。

一句话清除缓存,在测试开发环境很有用。

一句话导出所有用户email地址

检查pip requirements.txt文件是否过期packages,类似于pip list -o,只用于安装过的packages

只要提供app label,就会自动输出定义的Admin Class代码默认输出stdout

移除项目中所有的pyc文件。

一个app生成自定义命令需要目录结构

python manage.py create_command extension_app

一个app生成template tag需要目录结构

为项目编译python字节码。

生产一个modelform代码可以将它拷贝到的文件。

删除残留的squash migration文件。

生产一个python 脚本用来重新填充数据库

将项目的数据模型转换成UML图,创建基于model的GraphViz2文件。

开启一个邮件服务器,它会打印邮件内容而不是把它发送出去。

合并重复model instance

展示代码中所有的 TODO, FIXME, BUG, HACK, WARNING, NOTE, XXX 的地方。

轻松修改用户密码

展示所有的,或者指定django settings

通过session找到user,并且打印

删除测试数据库

使用DROP DATABASE和CREATE DATABASE来重置数据库

目前支持 sqlite3, mysql, postgres可以用来删除创建数据库

开启一个激活profile功能的开发服务器。

django上下文中运行一个脚本

标准runserver加上Werkzeugdebugger工具。

根据用户数据,为所有用户设置一个虚构的email。

展示当前项目可用template tags和template filters

展示model数据库是否结构不一样,如果有不一样的地方就展示出来。

根据配置文件settings.py)的内容生成创建数据库表的SQL语句

根据settings.py定义数据库配置返回一个可以用于其它程序数据库URI。

将MEDIA_ROOT的文件复制到S3。

重载权限

确认template是否有语法错误

字段扩展

djangoextensions提供的最有用的字段扩展:AutoSlugField、RandomCharFieldShortUUIDField

很多时候需要url里根据模型某个多个字段(比如标题用户名)生成一个独一无二的slug,便于搜索引擎发现内容AutoSlugField可以很轻松完成这个任务,而且永不重复。比如两篇文章有同样的标题,它会在第2篇文章的slug结尾上加上一个数字。

使用这个字段时先从djangoextensions导入然后指定根据哪些字段生成slug即可。它的强大之处在于它还支持自定义的模型方法和双下划线__关联模型查询

slug = AutoSlugField(populate_from=[‘title‘, ‘get_description‘, ‘author__username‘])

验证用户身份时经常需要生成一个随机字符串发给用户,有时还需生成随机的邀请码。RandomCharField可以轻松实现这个目的。还可以指定字符串长度格式

>>> RandomCharField(length=8, unique=True)                      BVm9GeaE

>>> RandomCharField(length=4, include_alpha=False)                  7097

>>> RandomCharField(length=12, include_punctuation=True)         k[ZS.TR,0LHO

>>> RandomCharField(length=12, lowercase=True, include_digits=False)       pzolbemetmok

  • ShortUUIDField

一个由22个字符组成的字符串,比正常的uuid短了很多。尽管不保证唯一,但重复概率极低。

模型扩展

djangoextensions提供的最有用的模型基类扩展:ActivatorModel、TitleDescriptionModel、 TimeStampedModelTitleSlugDescriptionModel。使用时将模型继承这几个基类即可

作为基类提供了 statusactivate_date,和 deactivate_date 这3个字段status是一个choice选项默认activated。每次当激活或失活一条记录时,日期自动更新。它还提供了一个自定义Manager方法,允许使用Model.objects.active()查询所有处于活跃状态对象

作为基类提供了title 和 description两个字段title最长255个字符

作为基类提供了created 和 modified两个字段。这两个字段都是自管理自动更新的。

作为基类提供了title , description和 slug三个字段,其中slug根据title自动生成,独一无二。

输入才有输出,吸收才能吐纳。——码字不易

原文地址:https://blog.csdn.net/zhouruifu2015/article/details/130023822

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45622.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注