确定Django是否在开发服务器下运行

时间:2012-08-19 15:09:18

标签: python django

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

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

Localhost:python manage.py runserver
不是localhost:python manage.py runserver 0.0.0.0:8000

3 个答案:

答案 0 :(得分:15)

根据Bernhard Vallant的建议,您只需在runserver中查看sys.argv

您可以使用以下内容替换DEBUG中的settings.py作业:

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

您还应import sys中的某个地方settings.py

答案 1 :(得分: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:有关详细信息,请参阅How can I tell whether my Django application is running on development server or not?

答案 2 :(得分:0)

这不是最好的方法,但它有效:) 为了更好的方法,您可以使用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
    #...