django-admin和manage.py

目錄

1、Django內置命令選項python

  1. check
  2. dbshell
  3. diffsettings
  4. flush
  5. makemigrations
  6. migrate
  7. runserver
  8. shell
  9. startapp
  10. startproject
  11. test

2、app提供的命令sql

  1. changepassword
  2. createsuperuser
  3. clearsessions
  4. collectstatic

3、 共有參數shell

  1. --pythonpath PYTHONPATH
  2. --settings SETTINGS
  3. --traceback
  4. --verbosity {0,1,2,3}, -v {0,1,2,3}
  5. --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)
相關文章
相關標籤/搜索