12

有没有办法确定 Django 是否在 localhost 上运行并相应地设置DEBUG变量settings.py

因此,如果我在本地运行服务器,它将设置DEBUGTrue,否则将其设置为False.

本地python manage.py runserver
主机:不是本地主机:python manage.py runserver 0.0.0.0:8000

4

3 回答 3

20

正如 Bernhard Valant 所建议的那样,您只需检查runserver.sys.argv

你可以用这个替换你的DEBUG作业settings.py

DEBUG = (sys.argv[1] == 'runserver')

您还应该import syssettings.py.

于 2012-08-19T16:54:46.637 回答
2

这不是最好的方法,但它有效:)
为了更好的东西,你可以使用django-configurations

import sys    
# Determine if in Production or Development
if (len(sys.argv) >= 2 and sys.argv[1] == 'runserver'):
    DEBUG = True 
    #...       
else:
    DEBUG = False
    #...

或者您可以将它用作little_birdie在评论中提到的单线:
DEBUG = (len(sys.argv) > 1 and sys.argv[1] == 'runserver')

于 2018-04-17T09:31:33.580 回答
0

对于您的问题,无法获得此已接受且相关的答案的永久链接。所以,只需粘贴它:-

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 的模块中的类,但我希望这能涵盖您。

PS:请参考如何判断我的 Django 应用程序是否在开发服务器上运行?更多细节

于 2012-08-19T15:43:37.427 回答