[Solved]-Determine if Django is running under the development server

20👍

As suggested by Bernhard Vallant, you can just check for runserver in sys.argv.

You can just replace your DEBUG assignment in settings.py with this:

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

You should also import sys somewhere in settings.py.

👤Tyilo

2👍

This is not the best approach, but it works 🙂
For something better you can use 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
    #...

Or you can use it as one-liner as mentioned by little_birdie in the comments:
DEBUG = (len(sys.argv) > 1 and sys.argv[1] == 'runserver')

0👍

Could not have a permalink to this accepted and related answer to your question. So, just pasting it:-

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

Of course, wsgi.file_wrapper might be set on META, and have a class from a module named django.core.servers.basehttp by extreme coincidence on another server environment, but I hope this will have you covered.

PS: Please refer to How can I tell whether my Django application is running on development server or not? for more details

👤GodMan

0👍

  • Simpler code.
  • you really should log it so you can know for sure
  • this works even if it’s run in an environment that starts it a completely different way other than calling python. There may not be argv at position 1.
import sys

DEBUG = 'runserver' in sys.argv
print(f'DEBUG = {DEBUG}')
👤toddmo

Leave a comment