Skip to main content

Django集成

0.9.2 新版功能.

这些函数简化了初始化Django的设置模块环境变量的过程。一旦这样做,您的fabfile可以从您的Django项目或Django本身导入,而不需要使用 manage.py 插件或每次使用您的fabfile自己设置环境变量。

目前,这些功能只允许Fabric与本地到您的fabfile Django安装进行交互。这不是限制,因为它的声音;例如,您可以将Fabric用作远程“构建”工具以及在本地使用。想象下面的fabfile:

from fabric.api import run, local, hosts, cd
from fabric.contrib import django

django.project('myproject')
from myproject.myapp.models import MyModel

def print_instances():
    for instance in MyModel.objects.all():
        print(instance)

@hosts('production-server')
def print_production_instances():
    with cd('/path/to/myproject'):
        run('fab print_instances')

通过在两端安装Fabric,您可以在本地执行 print_production_instances,这将在生产服务器上触发 print_instances,然后与生产的Django数据库进行交互。

作为另一个示例,如果您的本地和远程设置相似,您可以使用它来获取。您的数据库设置,然后在执行远程(非Fabric)命令时使用这些设置。这将允许您一定程度的自由,即使Fabric只安装在本地:

from fabric.api import run
from fabric.contrib import django

django.settings_module('myproject.settings')
from django.conf import settings

def dump_production_database():
    run('mysqldump -u %s -p=%s %s > /tmp/prod-db.sql' % (
        settings.DATABASE_USER,
        settings.DATABASE_PASSWORD,
        settings.DATABASE_NAME
    ))

如果从本地,开发环境运行,上述代码段将工作,再次提供您的本地 settings.py 镜像您的远程数据库连接信息。

fabric.contrib.django.project(name)

DJANGO_SETTINGS_MODULE 设置为 '<name>.settings'

此函数为常见的情况提供了一个方便的快捷方式,其中一个人使用Django默认命名约定作为其设置文件和位置。

使用 settings_module - 有关为何以及如何使用此功能的详细信息,请参阅其文档。

fabric.contrib.django.settings_module(module)

DJANGO_SETTINGS_MODULE shell环境变量设置为 module

由于Django的工作原理,从Django或Django项目导入将失败,除非正确设置shell环境变量 DJANGO_SETTINGS_MODULE (请参阅 Django设置文档。)。

此功能提供了这样做的快捷方式;调用它靠近您的fabfile或Fabric使用代码的顶部,之后任何Django导入应该正常工作。

注解

此函数设置 贝壳 环境变量(通过 os.environ),并且与Fabric自身的内部“env”变量无关。