使用zc.buildout在'$ django-admin.py startproject my_project'之后自动定制Django项目

时间:2012-10-22 13:57:18

标签: python django buildout

我已经删除了官方zc.buildout文档和一些内容,但我没有找到对以下问题的明确答案。

假设我想从现在开始在每个Django项目(Django1.4)中自动执行跟随更改,所有这些更改都可以仅由buildout.cfg执行文件吗

执行$ django-admin.py startproject my_project后,默认启动项目的更改的示例我将实现:

$ mkdir ~/path/to/my_project/my_project/db

settings.py:

import os
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(ROOT_PATH, 'db/my_project.db'),                      
        'USER': '',                     
        'PASSWORD': '',                  
        'HOST': '',                    
        'PORT': '', 
    }
}

我目前正在构建和使用我自己定制的Django源1.4分支的分发作为解决方案但是很高兴知道我是否也可以使用buildout来实现它。

2 个答案:

答案 0 :(得分:1)

你想要的并不是Buildout用例集的一部分。

您希望在启动项目时自定义生成的代码,而buildout旨在为您提供可重现的部署或开发环境。

一个开发人员会使用,后者旨在让多个开发人员或多个生产计算机启动并运行相同的软件堆栈。

也就是说,当然可以构建一个buildout配方,在部件运行时写出这些文件的新版本。例如,使用collective.recipe.template,您可以指定每次运行buildout时放置在特定位置的模板文件。请注意,如果这些文件发生变化,将覆盖这些文件。

答案 1 :(得分:1)

除了Martijn的回答:buildout可以创建目录就好了。看看http://pypi.python.org/pypi/z3c.recipe.mkdir/

这是我经常使用它的任务之一(为日志文件创建var / log /,为sqlite文件创建var / sqlite / dir等)。