在Django中插入额外启动代码的正确位置?
我想在我的Django程序启动时进行一些环境检查,如果出现错误就要大声报错,让大家都知道。比如说,数据库的编码不对,或者机器上的Python版本不被支持。
我希望我们的团队能面对一个致命的错误,必须去修复它,而不是可以选择忽视这个问题。
我可以写这些检查,但我很好奇应该把它们放在哪里最合适。怎样才能让它们在Django启动的过程中执行呢?我以为可能有一个信号可以监听,但在文档里找不到相关的内容。
7 个回答
4
如果你想确认系统安装得是否正确,我觉得你应该写一个自己的管理命令,然后在安装后运行它来进行检查。
我认为不需要太频繁地检查Python版本是否安装正确,特别是当你在共享主机上安装Django应用时。我的应用托管在alwaysdata上,他们每小时会重启一次FastCgi进程。这些检查可能会影响应用的响应时间。
4
我们用最上层的 urls.py
文件来处理这个问题。
3
我会把它们放在settings.py文件里。以前,我也把这样的系统检查放在这里:
try:
from local_settings import *
except ImportError:
print "Missing %s" % os.path.join(PROJECT_ROOT, "local_settings.py")
if DEBUG:
for p in [PROJECT_ROOT, MEDIA_ROOT, THEME_DIR, ADMIN_MEDIA_ROOT] + list(TEMPLATE_DIRS):
p = os.path.normpath(p)
if not os.path.exists(p):
print "Missing path: %s" % p