在Django中插入额外启动代码的正确位置?

9 投票
7 回答
5859 浏览
提问于 2025-04-15 16:22

我想在我的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

撰写回答