Determine si Django se está ejecutando bajo el servidor de desarrollo

¿Hay una manera de determinar si Django se está ejecutando en localhost y configurando la variable DEBUG en settings.py en consecuencia?

De modo que si ejecuto el servidor localmente, establecerá DEBUG en True y, de lo contrario, lo establecerá en False .

Localhost: python manage.py runserver
No localhost: python manage.py runserver 0.0.0.0:8000

Según lo sugerido por Bernhard Vallant, solo puede verificar los runserver de runserver en sys.argv .

Simplemente puede reemplazar su asignación DEBUG en settings.py con esto:

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

También debe import sys en algún lugar en settings.py .

No se pudo tener un enlace permanente a esta respuesta aceptada y relacionada con su pregunta. Así que, simplemente pegándolo: –

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

Por supuesto, wsgi.file_wrapper podría establecerse en META y tener una clase de un módulo llamado django.core.servers.basehttp por coincidencia extrema en otro entorno de servidor, pero espero que esto lo cubra.

PD: Consulte ¿Cómo puedo saber si mi aplicación Django se está ejecutando en el servidor de desarrollo o no? para más detalles

Este no es el mejor enfoque, pero funciona 🙂
Para algo mejor puedes usar configuraciones django.

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