2011-08-18 172 views
1

我想運行一個python腳本,應該做的:Python腳本來運行Django的命令

  1. 創建一個Django項目:django-admin startproject foobar
  2. 在項目中創建一個應用程序:python manage.py barfoo
  3. 添加的條目在設置的INSTALLED_APP中新創建的應用barfoo

我怎樣才能做到這一點?

回答

2

讀一點華南簡介子和POPEN方法。這可能是你正在尋找的。

  1. Popen(["django-admin", "startproject", "%s" % your_name ], stdout=PIPE).communicate()

  2. Popen(["python", "manage.py", "%s" % your_app_name ], stdout=PIPE).communicate()

3. 我知道這不是一個完美的代碼,但我只給一個想法。

with open("settings.py", 'r') as file: 
    settings = file.readlines() 

new_settings = [] 
for line in settings: 
    if "INSTALLED APPS" in line: 
     new_settings.append(line.replace("INSTALLED_APPS = (", "INSTALLED_APPS = (\n'%s'," % your_app_name)) 
    else: 
     new_settings.append(line) 
with open("settings.py", 'w') as file: 
    file.write("".join(new_settings)) 
+0

_Maybe_爲#1,但不是#2或#3。這些在Python中都很容易實現。 – agf

+0

我正在編輯它。 – Gandi

+0

非常多改進:)。 – agf

0

6年後,我偶然發現了這個問題,試圖找出如何編寫一些測試對於只添加與項目中的其他應用程序交互的自定義​​模板標記的應用程序。希望這可以幫助某人。

大廈@groovehunter答案:現在official documentation(Django的1.10)inculdes之外開發此功能。

請注意,您需要調用startapp之前,當前目錄切換到創建的項目。見this answer更多細節

from django.core import management 
import os 

management.call_command('startproject', 'foobar') 
os.chdir('foobar') 
management.call_command('startapp', 'barfoo') 

,或者您可以使用額外的argumento到startproject創建在當前目錄中的項目,如果你肯定不會有問題:

from django.core import management 

management.call_command('startproject', 'foobar', '.') 
management.call_command('startapp', 'barfoo') 
相關問題