【导语】:在我们使用Django框架开发应用或者网站的过程中,通常会用到许多命令进行管理,例如常用的runserver, makemigrations, migrate, shell等。此外,许多第三方包也提供了一些命令,我们可以在项目中使用这些命令,来简化开发流程。今天我们一起来学习一些有用的新命令。如果你还不熟悉Django,这里有一篇简单易上手的教程。
1. diffsettings# 使用方式: $ python manage.py diffsettings --default path.to.module --output unified
在开发过程中,有时需要同时处理多个环境,并对不同之处进行调试。在这种特殊的场景下,就需要用到diffsettings命令。该命令可以显示出当前配置文件与其他配置文件的差异。具体参数解释如下:
--all用来显示所有的配置
--default MODULE 中的MODULE表示要与当前配置进行比较的配置模块,如果省略了MODULE参数,则表示与Django的默认配置进行比较
--output {hash, unified}用来指定输出格式,hash是默认模式;unified显示的输出规则为:减号后面的是默认配置,加号后面的是改变后的配置
如下就是一个示例:
- DEBUG = False + DEBUG = True - EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - TIME_ZONE = 'America/Chicago' + TIME_ZONE = 'UTC' + USE_SRI = True - USE_TZ = False + USE_TZ = True ...2. sendtestemail
# 使用方式: $ python manage.py sendtestemail my@address.com
通过使用sendtestemail命令发送如下代码:
Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Test email from host on 2022-04-28 19:08:56.968492+00:00 From: webmaster@localhost To: my@address.com Date: Thu, 28 Apr 2022 19:08:56 -0000 Message-ID: <165117293696.405310.3477251481753991809@host> 出现这些代码,说明成功了 -----------------------------------------------------------
就可以检测和修改我们的邮箱配置。
3. inspectdb# 使用方式: $ python manage.py inspectdb
如果我们想基于现有的数据库(由其他系统管理)构建项目,可以使用inspectdb命令查看该数据库的结构,并根据数据库表反向生成Model。这样,开发者就无需再写复杂的SQL语句去使用数据了!示例如下:
# 这是一个自动生成的`Django`model模块
# 我们必须手动执行以下操作:
# * 重新排列model的顺序
# * 确保每个model都有一个`primary_key=True`字段,这样就可以指定自定义主键了
# * 确保给每个`ForeignKey`和`OneToOneField`都设置了`on_delete`,`ForeignKey`是关系字段,表示外键关联关系;`OneToOneField`是一对一字段,用来扩展已有字段。
# * 如果想在Django中创建、修改、删除数据表,需要移除`managed = False`这一行
# 可以重命名model,但不能重命名db_table值和字段名
...
class AuthPermission(models.Model):
content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING)
codename = models.CharField(max_length=100)
name = models.CharField(max_length=255)
class Meta:
managed = False
db_table = 'auth_permission'
unique_together = (('content_type', 'codename'),)
...
4. showmigrations
# 使用方式: $ python manage.py showmigrations --verbosity 2
通过使用showmigrations命令,可以看到当前项目所有的app及对应的已经生效的migration文件,[x]表示migrate通过, [ ]表示未通过。对于已通过的migration文件,还可以看到它的具体migrate时间。
admin [X] 0001_initial (applied at 2021-01-13 19:49:24) [X] 0002_logentry_remove_auto_add (applied at 2021-01-13 19:49:24) [X] 0003_logentry_add_action_flag_choices (applied at 2021-01-13 19:49:24) auth [X] 0001_initial (applied at 2021-01-13 19:49:24) [X] 0002_alter_permission_name_max_length (applied at 2021-01-13 19:49:24) [X] 0003_alter_user_email_max_length (applied at 2021-01-13 19:49:24) ...
还有许多其他有用的Django项目管理命令,这些命令初始的Django包里没有,可以通过外部包来使用,例如django-extensions[1]。
参考资料[1]
django-extensions: https://pypi.org/project/django-extensions/
[2]参考原文: https://blog.ovalerio.net/archives/2420
- EOF -
加主页君微信,不仅Python技能+1
主页君日常还会在个人微信分享Python相关工具、资源和精选技术文章,不定期分享一些有意思的活动、岗位内推以及如何用技术做业余项目
加个微信,打开一扇窗
推荐阅读 点击标题可跳转
1、django -2 http 协议处理流程
2、Django 源码解析 - 1
3、最简单的 Django 教程
觉得本文对你有帮助?请分享给更多人
推荐关注「Python开发者」,提升Python技能
点赞和在看就是最大的支持❤️



