歡迎訪問我的博客:小羊駝的部落閣
在DJango里django-admin.py和manage.py都是Django的命令工具集蛋逾,用于處理系統(tǒng)管理相關(guān)操作,而manage.py是在創(chuàng)建Django工程時(shí)自動(dòng)生成的枝笨,manage.py是對(duì)django-admin.py的簡(jiǎn)單包裝,二者的作用基本一致刊咳。
區(qū)別:
1辕万、django-admin存放在Python的site-packages\django\bin 里枢步,manage.py存放在項(xiàng)目工程文件夾里。
2渐尿、django-admin可以對(duì)不同的項(xiàng)目進(jìn)行設(shè)置醉途,而manege.py只能當(dāng)前的工程有效。
下面我們以manage.py為例涡戳,列出一些常用的命令:
語(yǔ)法:
django-admin <subcommand> [options]
manage.py <subcommand> [options]
subcommand是子命令结蟋;options是可選的
常用子命令:
startproject:創(chuàng)建一個(gè)項(xiàng)目(*)
startapp:創(chuàng)建一個(gè)app(*)
runserver:運(yùn)行開發(fā)服務(wù)器(*)
shell:進(jìn)入django shell(*)
dbshell:進(jìn)入django dbshell
check:檢查django項(xiàng)目完整性
flush:清空數(shù)據(jù)庫(kù)
compilemessages:編譯語(yǔ)言文件
makemessages:創(chuàng)建語(yǔ)言文件
makemigrations:生成數(shù)據(jù)庫(kù)同步腳本(*)
migrate:同步數(shù)據(jù)庫(kù)(*)
showmigrations:查看生成的數(shù)據(jù)庫(kù)同步腳本(*)
sqlflush:查看生成清空數(shù)據(jù)庫(kù)的腳本(*)
sqlmigrate:查看數(shù)據(jù)庫(kù)同步的sql語(yǔ)句(*)
dumpdata:導(dǎo)出數(shù)據(jù)
loaddata:導(dǎo)入數(shù)據(jù)
diffsettings:查看你的配置和django默認(rèn)配置的不同之處
manage.py特有的一些子命令:
createsuperuser:創(chuàng)建超級(jí)管理員(*)
changepassword:修改密碼(*)
clearsessions:清除session
1、help
作用:獲得幫助信息
語(yǔ)法:
顯示幫助信息和可用命令
python manege.py help
顯示可用命令列表
python manege.py help --commands
顯示指定命令的詳細(xì)文檔
python manage.py help #commands為需要指定顯示的命令
2渔彰、version
作用:獲取到當(dāng)前DJango的版本
語(yǔ)法:
python manage.py version
3嵌屎、check
作用:檢查工程中是否存在錯(cuò)誤(檢查完整性)
語(yǔ)法:
python manage.py check [appname] #命令后面跟APP名稱
4推正、startproject
作用:創(chuàng)建Django工程
語(yǔ)法:
django-admin startproject name [項(xiàng)目想要存放的路徑]
5、startapp
作用:創(chuàng)建Django應(yīng)用程序
語(yǔ)法:
django-admin startapp name [應(yīng)用想要存放的路徑]
python manage.py startapp name
6宝惰、runserver
作用:在當(dāng)前機(jī)器啟動(dòng)一個(gè)Web服務(wù)器植榕,運(yùn)行Django項(xiàng)目
語(yǔ)法:
#默認(rèn)是8000端口
python manage.py runserver
#指定IP和端口
python manage.py runserver 127.0.0.1:8000
#指定端口
python manage.py runserver 8000
7、shell
作用:?jiǎn)?dòng)一個(gè)交互窗口
語(yǔ)法:
python manage.py shell
#如果想使用ipython尼夺、bpython交互模式的話需要先安裝以上交互工具尊残,安裝命令:pip install ipython
#啟用命令
python manage.py shell --i [ipyhton]
8、migrations
Django通過migrations命令將Models中的任何修改寫入到數(shù)庫(kù)中淤堵,比如:新增加的模型或修改已有的字段等寝衫。
makemigrations
作用:根據(jù)models的變化生成對(duì)應(yīng)的Python代碼,該代碼用于更新數(shù)據(jù)庫(kù)
語(yǔ)法:
python manage.py makemigrations
python manage.py makemigrations [appname]
migrate
作用:將model里的修改應(yīng)用到數(shù)據(jù)庫(kù)
語(yǔ)法:
python manage.py migrate #默認(rèn)是所有的APP的修改應(yīng)用到數(shù)據(jù)庫(kù)
python manage.py migrate [appname] #指定APP的修改應(yīng)用到數(shù)據(jù)庫(kù)
python manage.py migrate [appname] [migrations_name] #將操作恢復(fù)到指定版本
注意:
如果執(zhí)行migrate的命令同時(shí)給了應(yīng)用程序的名字和migtrations名字拐邪,系統(tǒng)會(huì)把數(shù)據(jù)庫(kù)恢復(fù)到之前指定的一個(gè)版本慰毅。
python manage.py migrate myblog 0001_initial #指定blog應(yīng)用恢復(fù)到0001_initial 這個(gè)版本
Django所有的migration信息都保存在django_migrations這個(gè)數(shù)據(jù)庫(kù)表中,如下圖所示:
如果想撤銷所有的數(shù)據(jù)庫(kù)更改扎阶,我們可以使用 zero代替 上面的命令:
python manage.py migrate blog zero
高級(jí)用法:
如果數(shù)據(jù)庫(kù)里汹胃,已經(jīng)手動(dòng)更新了數(shù)據(jù)庫(kù),我們只是想設(shè)置當(dāng)前的migration狀態(tài)东臀,就使用下面的命令去實(shí)現(xiàn)着饥,這個(gè)命令并不會(huì)真正的去更新數(shù)據(jù)庫(kù)。
語(yǔ)法:
python manage.py migrate blog zero
sqlmigrate
作用:輸出某一個(gè)migrate對(duì)應(yīng)的SQL語(yǔ)句
語(yǔ)法:
python manage.py sqlmigrate blog 0001_initial
showmigrations
作用:顯示migrations記錄
語(yǔ)法:
python manage.py showmigrations
留意:記錄前有[X]的表示已經(jīng)部署到數(shù)據(jù)庫(kù)里去了惰赋,沒有的則顯示 [ ]