写点什么

就靠这一篇文章,我就弄懂了 Python Django 的 django-admin 命令行工具集

发布于: 2 小时前

橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。

已经完成的文章


十五、django-admin 命令行工具

15.1 django-admin 和 manage.py 简介

django-admin 是 Django 的命令行工具集,在之间的博客中已经有所设计了,manage.py 是创建 Django 项目自动生成的文件, 二者在使用的时候除了语法有差异,能做同样的事情


例如启动网站,我们常用的 python manage.py runserver,用 django-admin 修改命令为:django-admim runserver


如果你想一直使用 django-admin,那需要提前配置好 DJANGO_SETTINGS_MODULE 环境变量,这个提前配置就有一定的技术难度了,具体实现如下。


首先找到 manage.py 文件,在里面找到环境变量设置为 cutegirl.settings,如下图所示。



复制该值,将其存放到电脑环境变量中。



这样去项目目录运行我们的程序,会出现一个错误,异常如下:


ModuleNotFoundError: No module named 'cutegirl'
复制代码


模块异常,这时还要找到 Python 安装目录,然后在该目录下寻找如下文件夹 Python37\Lib\site-packages,在该文件中创建 django-site.pth 文件,文件中写入 cutegirl 项目目录。实现如下:



接下来准备工作完成,就可以运行 django-admin 命令了,得到下述内容表示运行成功,输出内容也罗列在了下方,这些都是后续要学习的参考内容。


cutegirl> django-admin
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[auth] changepassword createsuperuser
[contenttypes] remove_stale_contenttypes[django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject test testserver
[sessions] clearsessions
[staticfiles] collectstatic findstatic runserver
复制代码


准确的说以下三个命令都是相同的。


django-admin runserverpython manage.py runserverpython -m django runserver
复制代码


都可以出现如下启动详情:


Django version 3.1.7, using settings 'cutegirl.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
复制代码

15.2 必会的 help

学习任何命令都要先学会使用帮助手册,help 命令就是用于这个用于的。以下两个命令出现内容一致,都是上文所示命令展示。


django-admindjango-admin help
复制代码


还可以使用 help 查询指定命令帮助文档。格式如下:


django-admin help 命令名
复制代码


django-admin help --commandsdjango-admin help runserver
复制代码


运行效果如下所示。


15.3 检查 check

check 命令用来检查整个 Django 项目是否存在错误。


默认使用方式为:


django-admin check
复制代码


输出:


System check identified no issues (0 silenced).
复制代码


如果希望授权检查特定的应用,只需要修改命令如下所示即可。


django-admin check auth scoring
复制代码


通过调用 --list-tags 可以查看全部可用的应用。


django-admin check --list-tags
复制代码


基于上述命令的输出,你可以尝试下述写法。


django-admin check --tag urls
复制代码

15.4 dbshell

使用 settings.py 文件中 ENGINE 设置中指定的数据库引擎的命令行客户端,默认的是唤起 Sqlite3 数据库命令行客户端。


>django-admin dbshellCommandError: You appear not to have the 'sqlite3' program installed or on your path.
复制代码


但是运行过程中出现了如下 BUG,该内容是由于 Django 只集成 了 Sqlite3 的访问接口,并没有可执行文件,下载可执行文件 sqlite3.exe,然后放置到 C:\Windwos\System32 中即可。


这里给大家找到了一个直接下载的链接,可以 点击下载 即可。也可以自行打开官网寻找最新的 sqlite3.exe



再次运行之后,得到下图所示内容:


>django-admin dbshellSQLite version 3.7.14.1 2012-10-04 19:37:12Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite>
复制代码

15.5 dumpdata

输出指定应用,例如本例(scoring)中的指定模型的数据。


> django-admin dumpdata scoring.score[{"model": "scoring.score", "pk": 1, "fields": {"customer": 1, "score": 50}}, {"model": "scoring.score", "pk": 2, "fields": {"customer": 2, "score": 30}}, {"model": "scoring.score", "pk": 3, "fields": {"customer": 2, "score": 0}}, {"model": "scoring.score", "pk": 4, "fields": {"customer": 2, "score": 0}}]
复制代码


增加一个 --indent=4 可以对结果进行格式化输出。使用 --output 可以将数据保存到文件中。


> django-admin dumpdata scoring.score --indent=4[{    "model": "scoring.score",    "pk": 1,    "fields": {        "customer": 1,        "score": 50    }},
复制代码

15.6 迁移

Django 通过迁移(migrate)命令将 Model 中的修改写入到数据库中,


makemigrations 根据模型变化生成迁移代码,迁移代码会存放在每个应用下的 migrations 文件夹,如下图所示。



如果模型没有变化,会得到如下结果。


> django-admin makemigrations scoringNo changes detected in app 'scoring'
复制代码


这里可以扩展一下相关迁移的生成方式。


# 生成一个空迁移django-admin makemigrations scoring --empty# 固定名称生成django-admin makemigrations scoring --empty --name xiangpi
复制代码


migrate 使数据库状态与当前模型迁移集同步,即把模型的最新状态部署到数据库。该命令的语法格式为:


django-admin migrate [app_label] [migration_name]
复制代码


如果提供了 migration_name,系统会把数据库回滚到指定版本。


sqlmigrate 该命令可以将某个 migrate 输出为 SQL 语句。


> django-admin sqlmigrate scoring 0001_initial
复制代码


showmigrations 显示项目中所有的迁移文件。

15.7 其它零碎小命令

version 查看 Django 版本。


cutegirl>django-admin version3.1.7
复制代码


makemessages 用于国际化和本地化时,生成 .po 文件。


compilemessages 编译 .po 消息文件为 .mo 文件。


上述两个命令都用在国际化和本地化上面,未使用阶段了解即可。


createcachetable settings.py 中配置 CACHES 即可实现缓存表功能。


diffsettings


django-admin diffsettings


显示当前 settings.py 文件与 Django 的默认设置之间的差异。


flush


django-admin flush


清空当前数据库的数据。保留 migration 的变更不会被清除。只删除数据,不删除表结构。


inspectdb 通过已有数据库表生成 models.py 文件。也可以将视图创建为模型文件。


loaddata fixture 文件加载到数据库中。其中 fixture 是序列化好的文件,文件格式一般为 JSON 和 XML。


startprojectstartapp 创建项目和创建 APP 应用。


runserver 启用 Django 提供的轻量级的 Web 服务器,该服务器一般用于开发测试,在生产环境中不能使用。


changepassword 当使用了 Django 的认证系统之后,可以修改用户密码。


createsuperuser 建立超级用户.


clearsessions 清除过期的会话。

15.8 本篇博客小节

本篇博客重点解释了 Django 中的 django-admin 命令行,更多的内容可以去查询 官方手册


本文为大家罗列了最常用的一部门。


博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。

发布于: 2 小时前阅读数: 3
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
就靠这一篇文章,我就弄懂了 Python Django 的 django-admin 命令行工具集