如何判断我的Django应用是否在开发服务器上运行?
我怎么才能确定我的应用程序是在开发服务器上运行的呢?我想我可以检查一下settings.DEBUG
的值,如果DEBUG
是True
,那就可以假设它是在开发服务器上运行的。不过,我更希望能有更确定的方法,而不是仅仅依赖这种约定。
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
模块的类,但我希望这能帮到你。
顺便说一下,我是在开发服务器上创建了一个语法错误的模板时发现这个问题的,然后我在 Traceback
和 Request information
部分寻找有趣的内容,所以我只是编辑我的回答来支持 Nate 的想法。