我用setup_environ()
了一段时间来编写一个一次性的python脚本,从命令行运行,根本不适合作为自定义manage.py命令(我的首选).它很好地设置了一切.我假设我们不赞成这个功能,因为非django pythonistas取笑djangonauts这样的魔法东西,我们厌倦了感觉很脏.所以,如果它被弃用,那么替代方案是什么?也许这是一个懒惰的问题,但我需要用什么来代替setup_environ来实现同样的效果呢?我想我可以将该函数复制/粘贴到我的脚本中,但我认为这不是弃用它的重点.(显然我仍然可以使用一个已弃用的函数,但我希望我的脚本能够存活几个版本的django)
Ben*_*vis 58
这在Django 1.7中已经发生了变化
import os
import django
from myapp import models
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
print models.MyModel.objects.get(pk=1)
Run Code Online (Sandbox Code Playgroud)
Mar*_*ian 28
要扩展miki725的答案,如果有的话
from django.core.management import setup_environ
import fooproject.settings as settings
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)
只需更换
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
from django.conf import settings
Run Code Online (Sandbox Code Playgroud)
并且您的设置将作为设置加载.
对于Django 1.7+,请参阅Ben Davis的解决方案.
mik*_*725 21
Django 1.4发行说明官方建议django.conf.settings.configure()
用于设置设置.这对于需要以"pythonic"方式执行所有操作的小脚本来说非常有用.但是如果你有一个更大的项目,我喜欢使用Django方法,即拥有一个单独的设置模块/包,然后在DJANGO_SETTINGS_MODULE
环境变量中使用它的路径.这是用于以下方法的方法manage.py
:
# manage.py
# ...
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
# ...
Run Code Online (Sandbox Code Playgroud)
发布文档可以在这里找到.
归档时间: |
|
查看次数: |
20196 次 |
最近记录: |