1. 程式人生 > >django manage.py runserver(runfcgi)等各種功能

django manage.py runserver(runfcgi)等各種功能

【簡介】

django-admin.py是Django的一個用於管理任務的命令列工具。本文將描述它的大概用法。

另外,在每一個Django project中都會有一個manage.py。manage.py是對django-admin.py的簡單包裝,它額外幫助我們做了兩件事情:

  1. 它將你的project的包放到sys.path中
  2. 它將DJANGO_SETTINGS_MODULE環境變數設定為了你的project的setting.py檔案的位置。

如果你是通過setup.py工具來安裝Django的,那麼django-admin.py指令碼應該在你的系統目錄中。如果不存在,你可以到你的python安裝目錄下的site-package/django/bin中去找找看。

通常來說,如果你經常是在一個獨立的Django project裡工作,那麼使用manage.py會更方便一些。但如果你有很多Django project,那麼可以使用django-admin.py,同時需要經常變更DJANGO_SETTINGS_MODULE或使用–settings選項來設定不同的setting.py。

本文中都會使用django-admin.py來給大家做演示,但所有的例子,都也可以使用manage.py來實現。

【用法】

djang-admin.py的語法為:

django-admin.py <subcommand> [options]
manage.py <subcommand>  [options]

其中,subcommand是子命令;options是可選的,可以有0個到多個option。

獲得幫助的方法是使用help這個命令,共有兩種方法:

1 執行django-admin.py help會顯示用法資訊,並給出所有可用的subcommand列表

2 執行django-admin.py help <subcommand>會顯示特定的subcommand的描述資訊,以及所有可用的options

執行django-admin.py –version可以顯示django的版本號。

如果使用django-admin.py時加入–verbosity,則會顯示大量通知資訊和除錯資訊。

【runfcgi】- subcommand

用於啟動一個支援FastCGI協議的程序,以便接收WebServer發來的請求。可以使用flup作為Python FastCGI模組。

runfcgi的選項如下:

  • protocol:用於設定所使用的cgi協議,包括fcgi、scgi和ajp等,預設是fcgi。
  • host:用於設定監聽所在的主機名
  • port:用於設定監聽的埠
  • socket:用於設定監聽的UNIX socket
  • method:可以設定為prefork或threaded。預設是prefork。
  • maxrequests:一個子程序所能處理的請求的最大數量。一旦超過此數量,則子程序會被kill掉,並建立一個新程序。設定為0意味著對子程序無限制。
  • maxspare:空閒程序/執行緒的最大數量
  • minspare:空閒程序/執行緒的最小數量
  • maxchildren:程序/執行緒數的硬限制值
  • daemonize:為boolean值,表示是否放到後臺執行。
  • pidfile:設定一個檔案,用於將產生的PID資訊寫入。
  • workdir:用於設定工作目錄
  • debug:為boolean值,用於設定是否開啟flup的資訊跟蹤
  • outlog:用於設定將標準輸出寫入到的檔案
  • errlog:用於設定將標準錯誤輸出寫入到的檔案
  • umask:用於設定在程序執行時所用的umask。預設是022.

舉例來說:

django-admin.py runfcgi socket=/tmp/fcgi.sock method=prefork daemonize=true \
    pidfile=/var/run/django-fcgi.pid

此命令用於在後臺啟動fastCGI,並將pid寫入檔案中。

【runserver】- subcommand

用於在本機啟動一個輕量級的Web server。預設情況下,這個server會在127.0.0.1上監聽8000埠。你也可以傳入引數來改變預設配置。

如果你並非特權使用者,那麼你所設定的埠號不能低於1024,因為小於1024的埠已經被系統預定了。

一定不要用這個輕量級Server作為你的生產環境下的Server,因為它只能用於開發自測階段。它既沒有安全審計功能,而且又是單執行緒的。

另外,每來一個請求,Web Server都會從新載入一遍Python程式碼,因此如果你的程式碼有改動,不需要重啟Web Server即可生效。

你可以在一個project中啟動多個fastcgi server,只要設定不同的埠就可以了。

如果你設定的IP為預設的127.0.0.1,那麼你只能從本機的瀏覽器來登入瀏覽,無法從其他機器來訪問。為了能讓其他機器瀏覽本機,需要將IP設定為目標機器的IP或者0.0.0.0(IPv4地址)或::(IPv6地址)。

在指定IP地址時,也可以使用主機名或域名來代替。

【shell】- subcommand

用於開啟一個Python直譯器。

Django預設會使用IPython或bpython。但如果你沒有安裝它們或者就是要使用簡裝版的話,可以加上–plain選項,即:

django-admin.py shell --plain

【startapp】- subcommand

在當前路徑或指定目錄下建立一個Django app的資料夾結構。

預設情況下,資料夾中會包括module.py檔案和其他必備檔案。

如下命令用於在特定目錄下建立一個app:

django-admin.py startapp myapp /Users/jezdez/Code/myapp

【startproject】- subcommand

In Django, Projects can have many apps. Apps can be shared among many projects.

在當前目錄或指定位置建立一個Django project資料夾結構。

預設情況下,新資料夾中會包括manage.py和一系列必備檔案。

目標位置引數是可選的引數,可以設定project所建立的路徑。

例如,如下命令可以在指定位置建立一個project:

django-admin.py startproject myproject /Users/jezdez/Code/myproject_repo

和startapp命令一樣,--template命令准許你指定一個資料夾,檔案路徑,或者一個自定義專案模板的連結,關於對專案模板的支援可以檢視startapp的文件


下面的例子,在建立myproject專案的時候,會在指定的路徑查詢模板


django-admin.py startproject --template=/users/jezdez/code/my_project_template myproject


When Django copies the project template files, it also renders certain files through the template engine: the files whose extensions match the --extension option (py by default) and the files whose names are passed with the --name option. The template context used is:


Any option passed to the startproject command
project_name -- the project name as passed to the command
project_directory -- the full path of the newly created project
secret_key -- a random key for the SECRET_KEY setting
Please also see the rendering warning as mentioned for startapp.


syncdb


django-admin.py syncdb


這個命令將為以安裝的(INSTALLED_APPS)apps建立資料表,如果資料表還沒建立的話