陕西省建设监理协会官方网站,营销型企业网站建站,如何发布一个网页,前端网站开发Django-extensions是 Django 的扩展应用#xff0c;给django开发者提供了许多便捷的扩展工具(extensions)#xff0c;它提供了许多有用的工具和命令行工具#xff0c;帮助 Django 开发者更高效地进行开发和调试。它的作用包括#xff1a;
- 提供了更多的Django命令#x…Django-extensions是 Django 的扩展应用给django开发者提供了许多便捷的扩展工具(extensions)它提供了许多有用的工具和命令行工具帮助 Django 开发者更高效地进行开发和调试。它的作用包括
- 提供了更多的Django命令比如导出数据库、生成数据模型文档、查看URL路由表等
- 提供了一些有用的Django插件比如shell_plus插件可以在Shell中自动导入项目的所有模块
- 提供了一些有用的Django工具比如graph_models可以将项目的数据模型转换成UML图。
本篇文章介绍它包含哪些有用扩展以及它们的使用场景django-extensions主要提供了三种扩展命令扩展字段扩展和模型扩展。
官方文档https://django-extensions.readthedocs.io/en/latest/index.html
GitHubhttps://github.com/django-extensions/django-extensions django-extensions安装配置
使用pip安装pip install django-extensions
加入settings.py中的INSTALLED_APPS python manage.py help
[auth]
[contenttypes]
[django]
[sessions]
[staticfiles]
此时会多出来一项django_extensions
[django_extensions] 包含以下子命令
admin_generator、clean_pyc、clear_cache、compile_pyc、create_command、create_jobs、create_template_tags、delete_squashed_migrations、describe_form、drop_test_database、dumpscript、export_emails、find_template、generate_password、generate_secret_key、graph_models、list_model_info、list_signals、mail_debug、managestate、merge_model_instances、notes、pipchecker、print_settings、print_user_for_session、raise_test_exception、reset_db、reset_schema、runjob、runjobs、runprofileserver、runscript、runserver_plus、set_default_site、set_fake_emails、set_fake_passwords、shell_plus、show_template_tags、show_urls、sqlcreate、sqldiff、sqldsn、sync_s3、syncdata、unreferenced_files、update_permissions、validate_templates 在项目中准备以下环境信息
创建超级用户创建APPstartapp extension_app 命令扩展
shell_plus
shell命令的扩展命令,运行Django shell的同时自动加载所有app的models,并选择使用Python shell的版本。
每次进行Django项目调试时首先需要打开python shell再重新import每个model。如果安装了django-extensions, 使用python manage.py shell_plus命令将打开一个加强版的django shell这个shell_plus会自动载入项目中所有的model可以很方便的开始调试。 show_urls
一句话可以展示当前项目所有定义的urls。 clear_cache
一句话清除缓存在测试和开发环境很有用。 export_emails
一句话导出所有用户的email地址。 pipchecker
检查pip requirements.txt文件中是否有过期的packages类似于pip list -o只用于已安装过的packages。 admin_generator
只要提供app label就会自动为输出定义的Admin Class代码默认输出在stdout。 clean_pyc
移除项目中所有的pyc文件。 create_command
为一个app生成自定义命令所需要的目录结构。
python manage.py create_command extension_app create_template_tags
为一个app生成template tag所需要的目录结构。 compile_pyc
为项目编译python字节码。 describe_form
生产一个model的form代码可以将它拷贝到的文件。 delete_squashed_migrations
删除残留的squash migration文件。 dmpscript
生产一个python 脚本用来重新填充数据库。 graph_models
将项目的数据模型转换成UML图创建基于model的GraphViz2文件。 mail_debug
开启一个邮件服务器它会打印邮件内容而不是把它发送出去。 merge_model_instances
合并重复的model instance。 Notes
展示代码中所有的 TODO, FIXME, BUG, HACK, WARNING, NOTE, XXX 的地方。 Passwd
轻松修改用户密码。 print_settings
展示所有的或者指定的django settings。 print_user_for_session
通过session来找到user并且打印。 drop_test_database
删除测试数据库。 reset_db
使用DROP DATABASE和CREATE DATABASE来重置数据库。
目前支持 sqlite3, mysql, postgres可以用来删除或创建数据库 Runprofileserver
开启一个激活了profile功能的开发服务器。 Runscript
在django上下文中运行一个脚本。 runserver_plus
标准的runserver加上Werkzeug的debugger工具。 set_fake_emails
根据用户的数据为所有用户设置一个虚构的email。 show_template_tags
展示当前项目可用的template tags和template filters。 Sqldiff
展示model和数据库是否结构不一样如果有不一样的地方就展示出来。 Sqlcreate
根据配置文件settings.py的内容生成创建数据库表的SQL语句。 Sqldsn
根据settings.py定义的数据库配置返回一个可以用于其它程序的数据库URI。 sync_s3
将MEDIA_ROOT的文件复制到S3。 update_permissions
重载权限。 validate_templates
确认template是否有语法错误。
字段扩展
django-extensions提供的最有用的字段扩展AutoSlugField、RandomCharField和ShortUUIDField。
AutoSlugField
很多时候需要在url里根据模型某个或多个字段(比如标题用户名)生成一个独一无二的slug便于搜索引擎发现内容。AutoSlugField可以很轻松完成这个任务而且永不重复。比如两篇文章有同样的标题它会在第2篇文章的slug结尾上加上一个数字。
使用这个字段时先从django-extensions导入然后指定根据哪些字段生成slug即可。它的强大之处在于它还支持自定义的模型方法和双下划线__关联模型查询。
slug AutoSlugField(populate_from[title, get_description, author__username]) RandomCharField
验证用户身份时经常需要生成一个随机字符串发给用户有时还需生成随机的邀请码。RandomCharField可以轻松实现这个目的。还可以指定字符串长度和格式。 RandomCharField(length8, uniqueTrue) BVm9GeaE RandomCharField(length4, include_alphaFalse) 7097 RandomCharField(length12, include_punctuationTrue) k[ZS.TR,0LHO RandomCharField(length12, lowercaseTrue, include_digitsFalse) pzolbemetmok ShortUUIDField
一个由22个字符组成的字符串比正常的uuid短了很多。尽管不保证唯一但重复概率极低。 模型扩展
django-extensions提供的最有用的模型基类扩展ActivatorModel、TitleDescriptionModel、 TimeStampedModel和TitleSlugDescriptionModel。使用时将模型继承这几个基类即可。
ActivatorModel
作为基类提供了 status, activate_date,和 deactivate_date 这3个字段。status是一个choice选项默认是activated。每次当激活或失活一条记录时日期会自动更新。它还提供了一个自定义Manager方法允许使用Model.objects.active()查询所有处于活跃状态的对象。 TitleDescriptionModel
作为基类提供了title 和 description两个字段。title最长255个字符。 TimeStampedModel
作为基类提供了created 和 modified两个字段。这两个字段都是自管理自动更新的。 TitleSlugDescriptionModel
作为基类提供了title , description和 slug三个字段其中slug根据title自动生成独一无二。 输入才有输出吸收才能吐纳。——码字不易