亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

詳解Python的Django框架中manage命令的使用與擴展

2020-01-04 17:33:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python的Django框架中manage命令的使用與擴展,manage.py使得用戶借助manage命令在命令行中能實現諸多簡便的操作,需要的朋友可以參考下
 

【簡介】

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

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

它將你的project的包放到sys.path中
它將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發來的請求??梢允褂胒lup作為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創建數據表,如果數據表還沒創建的話。

【擴展manage命令】
我們都用過Django的django-admin.py和manage.py。django-admin.py是一個命令行工具,可以執行一些管理任務,比如創建Django項目。而manage.py是在創建每個Django project時自動添加在項目目錄下的,只是對manage.py的一個簡單包裝,其功能是將Django project放到sys.path目錄中,同時設置DJANGO_SETTINGS_MODULE環境變量為當前project的setting.py文件。


django-admin.py調用django.core.management來執行命令:

#!/usr/bin/env pythonfrom django.core import management  if __name__ == "__main__":  management.execute_from_command_line()

excute_from_command_line()函數會根據命令行參數解析出命令的名稱,根據命令名稱調用相應的Command執行命令。Command位于各個管理模塊的commands模塊下面。

所謂管理模塊,是指在app模塊下的名字為management的模塊。Django通過django.core.management.find_management_module函數發現"管理模塊":

django.core.management.find_management_module()def find_management_module(app_name):  """  Determines the path to the management module for the given app_name,  without actually importing the application or the management module.  Raises ImportError if the management module cannot be found for any reason.  """  parts = app_name.split('.')  parts.append('management')  parts.reverse()  part = parts.pop()  path = None

然后通過django.core.management.find_commands函數找到命令類。find_commands函數會在管理模塊下查找.py文件,并將.py文件的名稱匹配到命令名稱:

def find_commands(management_dir):  """  Given a path to a management directory, returns a list of all the command  names that are available.  Returns an empty list if no commands are defined.  """  command_dir = os.path.join(management_dir, 'commands')  try:    return [f[:-3] for f in os.listdir(command_dir)      if not f.startswith('_') and f.endswith('.py')]  except OSError:  return []

最后,通過django.core.management.load_command_class函數加載該.py文件中的Command類:

def load_command_class(app_name, name):  """  Given a command name and an application name, returns the Command  class instance. All errors raised by the import process  (ImportError, AttributeError) are allowed to propagate.  """  module = import_module('%s.management.commands.%s' % (app_name, name))  return module.Command()

在執行命令的時候,會執行相應Command類的handle方法。所有的Command類都應該是django.core.management.base.BaseCommand的直接或間接子類。

原理搞清楚了,擴展manage命令就很容易了。創建一個app并加入到settings的INSTALLED_APPS中,在該app下面創建management.commands模塊,并創建hello.py文件:

from django.core.management.base import BaseCommand, CommandErrorfrom django.db import models#from placeholders import *import os  class Command(BaseCommand):   def handle(self, *args, **options):     print 'hello, django!'

 

就可以使用hello命令了:

$ python manage.py hellohello, django!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色99之美女主播在线视频| 午夜精品福利视频| 国产成人啪精品视频免费网| 国产精品女人久久久久久| 亚洲白拍色综合图区| 在线观看欧美视频| 中文字幕最新精品| 亚洲区在线播放| 日韩欧美国产成人| 久久久免费观看视频| 国产精品手机播放| 欧美与欧洲交xxxx免费观看| 久久亚洲一区二区三区四区五区高| 亚洲专区国产精品| 国产成人激情视频| 国产精品一区二区在线| 狠狠色噜噜狠狠狠狠97| 欧美一级片免费在线| 欧美日韩亚洲国产一区| 国产欧美日韩中文字幕| 欧美性极品xxxx做受| 91精品国产综合久久香蕉922| 日韩欧美国产高清91| 欧美黄色三级网站| 欧洲中文字幕国产精品| 日韩av综合中文字幕| 国产精品久久久久久久久久99| 97超级碰在线看视频免费在线看| yw.139尤物在线精品视频| 久久久久久久影视| 日产精品99久久久久久| 久久韩剧网电视剧| 久久精品视频在线| 欧美日韩国产一区中文午夜| 国产精品久久久久77777| 4388成人网| 欧美日韩国产中字| 国产精品xxx视频| 国产精品美女无圣光视频| 秋霞成人午夜鲁丝一区二区三区| 亚洲第一区在线| 精品视频—区二区三区免费| 亚洲人线精品午夜| 国产精品老女人精品视频| 中文日韩电影网站| 欧美激情亚洲一区| 九色91av视频| 大桥未久av一区二区三区| 国产精品福利网| 亚洲精品之草原avav久久| 欧美中文字幕在线播放| 久久亚洲精品小早川怜子66| 欧美激情久久久久| 中文欧美在线视频| 在线播放日韩精品| 欧美午夜精品久久久久久久| 亚洲欧美日韩精品| 中文字幕视频一区二区在线有码| 国产精品91视频| 色一情一乱一区二区| 日韩有码在线电影| 欧美成aaa人片免费看| 久久不射热爱视频精品| 热久久免费视频精品| 国产精品自拍网| 91国产一区在线| 久久免费国产精品1| 91在线中文字幕| 久久精品中文字幕免费mv| 2020国产精品视频| 日韩久久午夜影院| 久久九九全国免费精品观看| 国产精品爱啪在线线免费观看| 欧美另类暴力丝袜| 欧美色播在线播放| 91成人性视频| 国产精品99久久99久久久二8| 欧美性理论片在线观看片免费| 日韩精品免费在线播放| 国产成人avxxxxx在线看| 伊人av综合网| 亚洲精品综合久久中文字幕| 久久久成人精品视频| 亚洲欧美一区二区三区四区| 亚洲日本中文字幕免费在线不卡| 91精品美女在线| 日韩在线免费视频观看| 97成人在线视频| 亚洲性生活视频在线观看| 午夜精品一区二区三区在线播放| 日韩av网站大全| 国产日韩精品入口| 久久久久久12| 国产精品久久久久av免费| 国内免费精品永久在线视频| 精品视频—区二区三区免费| 日韩av免费在线播放| 久久视频精品在线| 92福利视频午夜1000合集在线观看| 久久精品一本久久99精品| 国产91精品久久久久久| 在线电影av不卡网址| 国产精品爽爽爽爽爽爽在线观看| 最近2019年日本中文免费字幕| 国产91色在线|免| 按摩亚洲人久久| 性视频1819p久久| 中文字幕日韩专区| 国内伊人久久久久久网站视频| 色播久久人人爽人人爽人人片视av| 久久99精品国产99久久6尤物| 久久人人97超碰精品888| 欧美久久精品一级黑人c片| 亚洲欧美国产精品va在线观看| 久久久中精品2020中文| 亚洲一区二区在线播放| 久久久久久国产免费| 成人免费视频网| 日韩美女视频中文字幕| 亚洲字幕在线观看| 欧美激情第三页| 国产精品日韩一区| www高清在线视频日韩欧美| 日日骚久久av| 亚洲欧洲成视频免费观看| 亚洲高清福利视频| 久久久久亚洲精品成人网小说| 黑人巨大精品欧美一区二区| 日本在线精品视频| 久久综合免费视频| 亚洲福利在线观看| 日日骚久久av| 成人信息集中地欧美| 欧洲成人免费aa| 成人黄色在线免费| 国产福利精品av综合导导航| 亚洲国产黄色片| 亚洲欧美成人在线| 成人av在线网址| 亚洲品质视频自拍网| 亚洲天堂av综合网| 精品少妇一区二区30p| 久久免费视频在线| 欧美理论电影在线观看| 日韩欧美国产骚| 久久精品一区中文字幕| 午夜精品久久久久久久男人的天堂| 97视频人免费观看| 国产91在线播放| 久久久久久久久国产精品| 九九热这里只有精品免费看| 久久久精品在线| 国产精品久久久久久久久| 亚洲精品国产精品久久清纯直播| 亚洲网站视频福利| 国产精品吹潮在线观看| 精品二区三区线观看| 亚洲性生活视频| 亚洲第一av网站| 欧美电影在线免费观看网站| 宅男66日本亚洲欧美视频| 国产激情视频一区| 成人亚洲激情网| 欧美另类精品xxxx孕妇|