2011-08-18 175 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') 
相关问题