django manage.py设置默认值

int*_*rgc 14 python django

我有一个settings.py文件和一个dev_settings.py文件,我用它来覆盖一些用于开发目的的值.每次运行./manage.py命令时,我都必须指定--settings=whatever.local_settings.这样做每次都变得非常繁琐,我试图找到一种方法强制manage.py每次默认加载我的dev_settings.py文件,这样我每次运行时都不必输入那个长参数命令.

我尝试过设置DJANGO_SETTINGS_MODULE,但似乎manage.py会覆盖此选项.

是否有可能实现这一目标,或者我注定要始终指定该论点?

Ond*_*ták 14

manage.py为你设置路径,这就是它忽略的原因DJANGO_SETTINGS_MODULE(它基本上只是包裹的脚本django-admin.py).

有两种简单的方法可以解决您的问题:

  1. 设置DJANGO_SETTINGS_MODULE并使用django-admin.py来运行所有命令而不是manage.py.如果你使用vitualenv,这甚至会更好.

  2. 复制manage.py并命名它local.py(这是我的名字),并将所有settings提及重命名为dev_settings.

例如:

#!/usr/bin/env python
from django.core.management import execute_manager
import imp

try:
    import settings_local
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings_local.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_manager(settings_local)
Run Code Online (Sandbox Code Playgroud)

./local.py现在可以运行所有命令.