目錄
1、Django內置命令選項python
- check
- dbshell
- diffsettings
- flush
- makemigrations
- migrate
- runserver
- shell
- startapp
- startproject
- test
2、app提供的命令sql
- changepassword
- createsuperuser
- clearsessions
- collectstatic
3、 共有參數shell
- --pythonpath PYTHONPATH
- --settings SETTINGS
- --traceback
- --verbosity {0,1,2,3}, -v {0,1,2,3}
- --no-color
4、顏色控制數據庫
5、在代碼中調用管理命令django
django-admin是用於管理Django的命令行工具集,當咱們成功安裝Django後,在操做系統中就會有這個命令,可是根據安裝方式或者系統環境的不一樣,你可能須要配置一下調用路徑。在Linux下,該命令通常位於site-packages/django/bin
,最好作一個連接到/usr/local/bin
,方便調用。Windows下能夠配置系統環境變量,參考教程開始部分。編程
manage.py則是每一個Django項目中自動生成的一個用於管理項目的腳本文件,須要經過python命令執行。服務器
有三種方式,能夠執行Django提供的內置命令:網絡
$ django-admin <command> [options] $ manage.py <command> [options] $ python -m django <command> [options]
其中的command是Django內置的或者你自定義的命令。session
有三種獲取幫助信息的辦法:多線程
django-admin help
:顯示使用信息和命令列表。
django-admin help --commands
:全部可用命令的列表。
django-admin help <command>
:命令的介紹及其可用的參數列表。
django-admin version
:獲取當前使用的Django版本。
使用--verbosity
參數指定django-admin
將通知和調試信息打印到控制檯。
1、Django內置命令選項
Django爲咱們提供了一系列命令選項,有一些每天都用,有一些很重要,有一些基本用不到。下面列出了一些重要的:
調用方式:django-admin 命令選項 額外參數
1. check
檢查整個Django項目是否存在常見問題。
默認狀況下,全部應用都將被選中。能夠經過提供app的名字檢查指定的應用:
django-admin check auth admin myapp
若是你沒有指定任何一個應用,那麼將對所有的應用進行檢查。
2. dbshell
運行ENGINE設置中指定的數據庫引擎的命令行客戶端,其中USER,PASSWORD等指定鏈接參數。
--database DATABASE
指定打開某個數據庫的shell。 默認爲default。
3. diffsettings
django-admin diffsettings
顯示當前設置文件與Django的默認設置之間的差別。
4. flush
django-admin flush
從數據庫中刪除全部數據。已應用的遷移不會被清除。只刪除具體數據,不刪除數據表!
若是您但願從空數據庫啓動並從新運行全部遷移,則應該刪除並從新建立數據庫,而後再運行migrate,這樣會連原來的數據表都刪了。
5. makemigrations
django-admin makemigrations [app_label [app_label ...]]
根據檢測到的模型建立新的遷移。遷移的做用,更多的是將數據庫的操做,以文件的形式記錄下來,方便之後檢查、調用、重作等等。尤爲是對於Git版本管理,它沒法獲知數據庫是如何變化的,只能經過遷移文件中的記錄來追溯和保存。
6. migrate
django-admin migrate [app_label] [migration_name]
使數據庫狀態與當前模型集和遷移集同步。說白了,就是將對數據庫的更改,主要是數據表設計的更改,在數據庫中真實執行。例如,新建、修改、刪除數據表,新增、修改、刪除某數據表內的字段等等。
7. runserver
django-admin runserver [addrport]
啓用Django爲咱們提供的輕量級的開發用的Web服務器。默認狀況下,服務器運行在IP地址127.0.0.1的8000端口上。若是要自定義服務器端口和地址,能夠顯式地傳遞一個IP地址和端口號給它。
在Linux中,若是你以一個普通用戶的身份來運行腳本,你可能沒有權限在低位端口上運行。低端口數(即1024如下)是預留出來給超級用戶(root)的。
這個服務器使用的WSGI application對象是在WSGI_APPLICATION
中設置的。
不要在生產環境中使用這個服務器。
一般,每當咱們寫的代碼有變化時,這個服務器會自動重啓,但這不是絕對的,因此,爲了避免出意外,每次測試時,仍是手動重啓一下吧。
當你啓動服務器以後,在服務器運行過程當中每當你的Python代碼有變動時,系統的檢測框架將會檢查整個項目中是否存在一些直觀的錯誤,若是檢測到了錯誤,這些錯誤信息將會輸出至標準輸出。
能夠同時啓動多個服務器,只要它們在不一樣的端口上,屢次執行django-admin runserver ...
便可。
注意:默認的IP爲127.0.0.1,它是不可被網絡中的其它主機所訪問的,只能本機。要使網絡上的其餘計算機能夠訪問你的開發服務器,請使用本身的IP地址(例如192.168.2.1)或0.0.0.0或 :: (啓用IPv6)。也可使用只包含ASCII碼的主機名.
Django開發服務器,默認支持多線程,能夠經過--nothreading
參數關閉。
下面是使用不一樣端口和地址的示例:
端口8000在IP地址127.0.0.1:
django-admin runserver
端口8000在IP地址1.2.3.4:
django-admin runserver 1.2.3.4:8000
端口7000在IP地址127.0.0.1:
django-admin runserver 7000
端口7000在IP地址1.2.3.4:
django-admin runserver 1.2.3.4:7000
端口8000在IPv6地址::1:
django-admin runserver -6
端口7000在IPv6地址::1:
django-admin runserver -6 7000
端口7000在IPv6地址2001:0db8:1234:5678::9:
django-admin runserver [2001:0db8:1234:5678::9]:7000
端口8000在主機的IPv4地址localhost:
django-admin runserver localhost:8000
端口8000在主機的IPv6地址localhost:
django-admin runserver -6 localhost:8000
8. shell
django-admin shell
啓動帶有Django環境的Python交互式解釋器,也就是命令行環境。默認使用基本的python交互式解釋器。這個命令很是經常使用,是咱們測試和開發過程當中不可或缺的部分!
--interface {ipython,bpython,python}, -i {ipython,bpython,python}
指定要使用的shell。 默認狀況下,Django將使用IPython或bpython。若是同時安裝了兩個,請指定您想要的那個,以下所示:
使用IPython:
django-admin shell -i ipython
使用bpython:
django-admin shell -i bpython
9. startapp
django-admin startapp name [directory]
建立新的app。
默認狀況下,會在這個新的app目錄下建立一系列文件模版,好比models.py、views.py、admin.py等等。
10. startproject
django-admin startproject name [directory]
新建工程。默認狀況下,新目錄包含manage.py腳本和項目包(包含settings.py和其餘文件)。
11. test
django-admin test [test_label [test_label ...]]
運行全部已安裝的app的測試代碼。
2、app提供的命令
前面是Django核心提供的命令項,下面則是一些內置app,好比auth等提供的命令項。它們只在對應的app啓用的時候纔可用。
下面是最重要的幾個:
1. changepassword
此命令僅在安裝了Django的authentication system(django.contrib.auth)時可用。
該命令用於更改用戶的密碼。它會提示爲給定用戶輸入兩次新密碼。若是兩次輸入相同,則當即成爲新密碼。 若是不提供用戶名,該命令將嘗試更改與當前用戶匹配的用戶名的密碼。
用法示例:
django-admin changepassword tom
2. createsuperuser
此命令僅在安裝了Django的authentication system(django.contrib.auth)時可用。
建立超級用戶賬戶(具備全部權限的用戶)。若是你須要建立初始超級用戶賬戶,或者須要以編程方式爲你的網站生成超級用戶賬戶,這將很是有用。
以交互方式運行時,此命令將提示輸入新超級用戶的密碼。
當以非交互方式運行時,將不會設置密碼,而且超級用戶賬戶將沒法登陸,直到爲其手動設置密碼。
可使用命令行上的--username
和--email
參數提供新賬戶的用戶名和電子郵件地址。若是未提供其中任何一個,則createsuperuser將在以交互方式運行時提示輸入。
3. clearsessions
清除過時的會話。能夠做爲cron按期做業或直接運行。
4. collectstatic
僅當安裝了static files application(django.contrib.staticfiles)時,此命令纔可用。
用於在線上環境,當DEBUG設置爲False時,將靜態文件等統一集中到一個目錄下,爲Web服務器提供靜態文件支持。
這是一個不起眼,但很是重要的命令!
3、 共有參數
每種命令都有本身特定的參數選項,但下面幾個是全部命令均可以使用的參數:
1. --pythonpath PYTHONPATH
將給定的文件系統路徑添加到Python的模塊導入搜索路徑(import search path)。
若是未提供,django-admin將使用PYTHONPATH環境變量的值。
用法示例:
django-admin migrate --pythonpath='/home/djangoprojects/myproject'
2. --settings SETTINGS
指定要使用的配置文件。例如mysite.settings。若是未提供,django-admin將使用DJANGO_SETTINGS_MODULE
環境變量的值。
用法示例:
django-admin migrate --settings=mysite.settings
3. --traceback
當引起CommandError時,顯示完整的錯誤棧信息。默認狀況下,django-admin將顯示一個簡單的錯誤消息。
用法示例:
django-admin migrate --traceback
4. --verbosity {0,1,2,3}, -v
指定向控制檯打印消息的方式。
- 0表示無輸出。
- 1表示正常輸出(默認)。
- 2表示詳細輸出。
- 3表示很是詳細輸出。
用法示例:
django-admin migrate --verbosity 2
5. --no-color
禁用彩色的輸出信息。 一些命令會給它輸出的內容添加色彩。例如,錯誤將以紅色打印到控制檯,SQL語句將突出顯示語法。
用法示例:
django-admin runserver --no-color
4、顏色控制
若是你的終端支持ANSI顏色輸出,則django-admin
或者manage.py命令將使用漂亮的顏色輸出。若是你將命令的輸出傳遞到另外一個程序,它不會使用顏色代碼。
在Windows下,本機控制檯不支持ANSI轉義序列,所以默認狀況下沒有顏色輸出。可是,能夠安裝ANSICON第三方工具,Django命令將檢測其存在,並使用帶顏色的輸出,就像在基於Unix的平臺上。
用於語法高亮的顏色能夠自定義。Django自帶三個調色板:
- dark,適用於在黑色背景上顯示白色文字的終端。 這是默認調色板。
- light,適用於在白色背景上顯示黑色文本的終端。
- nocolor,禁用語法高亮顯示。
能夠經過設置DJANGO_COLORS環境變量來指定要使用的調色板。 例如,要在Unix或OS/X BASH shell下指定light調色板,能夠運行如下命令:
export DJANGO_COLORS="light"
還能夠自定義要使用的顏色,如下是基本規則:
error - 主要錯誤。 notice - 一個小錯誤。 success - 成功。 warning - 警告。 sql_field - SQL中模型字段的名稱。 sql_coltype - SQL中的模型字段的類型。 sql_keyword - 一個SQL關鍵字。 sql_table - SQL中模型的名稱。 http_info - 1XX HTTP信息服務器響應。 http_success - 2XX HTTP成功服務器響應。 http_not_modified - 304 HTTP未修改服務器響應。 http_redirect - 除304以外的3XX HTTP重定向服務器響應。 http_not_found - 404 HTTP未找到服務器響應。 http_bad_request - 除404以外的4XX HTTP錯誤請求服務器響應。 http_server_error - 5XX HTTP Server錯誤響應。 migrate_heading - 遷移管理命令中的標題。 migrate_label - 遷移名稱。
能夠從如下列表中分配特定的前景和背景顏色:
black red green yellow blue magenta cyan white
可使用如下顯示選項修改每種顏色:
bold underscore blink reverse conceal
顏色的配置規範遵循如下模式之一:
role=fg role=fg/bg role=fg,option,option role=fg/bg,option,option
其中role是有效顏色配置的名稱,fg是前景顏色,bg是背景顏色,每一個option是一個顏色修改選項(用分號分隔)。 像這樣:
export DJANGO_COLORS="error=yellow/blue,blink;notice=magenta"
或者:
export DJANGO_COLORS="light;error=yellow/blue,blink;notice=magenta"
5、在代碼中調用管理命令
django.core.management.call_command(name, args, *options)
要在代碼中調用管理命令,須要使用call_command方法,它接受下面的參數:
name
:
要調用的命令的名稱或命令對象。
*args
:
該命令接受的參數列表。 例如,call_command('flush', ' - verbosity = 0')
。
**options
:
傳遞給命名的選項。 例如,call_command('flush', verbosity = 0)
。
例子:
from django.core import management from django.core.management.commands import loaddata management.call_command('flush', verbosity=0, interactive=False) management.call_command('loaddata', 'test_data', verbosity=0) management.call_command(loaddata.Command(), 'test_data', verbosity=0)
命名參數能夠經過使用如下語法之一傳遞:
# Similar to the command line management.call_command('dumpdata', '--natural-foreign') # Named argument similar to the command line minus the initial dashes and # with internal dashes replaced by underscores management.call_command('dumpdata', natural_foreign=True) # `use_natural_foreign_keys` is the option destination variable management.call_command('dumpdata', use_natural_foreign_keys=True)
有多個參數時,傳遞列表:
management.call_command('dumpdata', exclude=['contenttypes', 'auth'])
能夠重定向標準輸出和錯誤流,由於全部命令都支持stdout和stderr選項。 例如:
with open('/path/to/command_output') as f: management.call_command('dumpdata', stdout=f)