,我就弄懂了 Python Django 的 django-admin 命令行工具集

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了,我就弄懂了 Python Django 的 django-admin 命令行工具集相关的知识,希望对你有一定的参考价值。

十五、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 runserver
python manage.py runserver
python -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-admin
django-admin help

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

django-admin help 命令名
django-admin help --commands
django-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 dbshell
CommandError: 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 dbshell
SQLite version 3.7.14.1 2012-10-04 19:37:12
Enter ".help" for instructions
Enter 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 scoring
No 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 version
3.1.7

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

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

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

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

diffsettings

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

flush

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

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

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

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

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

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

createsuperuser
建立超级用户.

clearsessions
清除过期的会话。

15.8 本篇博客小节

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

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

以上是关于,我就弄懂了 Python Django 的 django-admin 命令行工具集的主要内容,如果未能解决你的问题,请参考以下文章

django连接mysql

为本地开发设置 django 和 dj-database-url

Python一文弄懂python装饰器(附源码例子)

Python一文弄懂python装饰器(附源码例子)

Python一文弄懂python装饰器(附源码例子)

安装django