如何判断我的Django应用是否在开发服务器上运行?

65 投票
16 回答
32091 浏览
提问于 2025-04-15 13:40

我怎么才能确定我的应用程序是在开发服务器上运行的呢?我想我可以检查一下settings.DEBUG的值,如果DEBUGTrue,那就可以假设它是在开发服务器上运行的。不过,我更希望能有更确定的方法,而不是仅仅依赖这种约定。

16 个回答

19

通常这样做是有效的:

import sys

if 'runserver' in sys.argv:
    # you use runserver
49

我在我的settings.py文件里加了以下内容,以便区分标准的开发服务器和生产环境:

import sys
RUNNING_DEVSERVER = (len(sys.argv) > 1 and sys.argv[1] == 'runserver')

不过,这个方法也依赖于一些约定。

(根据Daniel Magnusson的评论进行了修改)

22
server = request.META.get('wsgi.file_wrapper', None)
if server is not None and server.__module__ == 'django.core.servers.basehttp':
    print('inside dev')

当然,wsgi.file_wrapper 可能在 META 中被设置,并且在另一个服务器环境中,恰好有一个来自 django.core.servers.basehttp 模块的类,但我希望这能帮到你。

顺便说一下,我是在开发服务器上创建了一个语法错误的模板时发现这个问题的,然后我在 TracebackRequest information 部分寻找有趣的内容,所以我只是编辑我的回答来支持 Nate 的想法。

撰写回答