有没有办法确定 Django 是否在 localhost 上运行并相应地设置DEBUG
变量settings.py
。
因此,如果我在本地运行服务器,它将设置DEBUG
为True
,否则将其设置为False
.
本地python manage.py runserver
主机:不是本地主机:python manage.py runserver 0.0.0.0:8000
正如 Bernhard Valant 所建议的那样,您只需检查runserver
.sys.argv
你可以用这个替换你的DEBUG
作业settings.py
:
DEBUG = (sys.argv[1] == 'runserver')
您还应该import sys
在settings.py
.
这不是最好的方法,但它有效:)
为了更好的东西,你可以使用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')
对于您的问题,无法获得此已接受且相关的答案的永久链接。所以,只需粘贴它:-
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 应用程序是否在开发服务器上运行?更多细节