How can I tell whether my Django application is running on development server or not? How can I tell whether my Django application is running on development server or not? django django

How can I tell whether my Django application is running on development server or not?


I put the following in my settings.py to distinguish between the standard dev server and production:

import sysRUNNING_DEVSERVER = (len(sys.argv) > 1 and sys.argv[1] == 'runserver')

This also relies on convention, however.

(Amended per Daniel Magnusson's comment)


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.

By the way, I discovered this by making a syntatically invalid template while running on the development server, and searched for interesting stuff on the Traceback and the Request information sections, so I'm just editing my answer to corroborate with Nate's ideas.


Usually this works:

import sysif 'runserver' in sys.argv:    # you use runserver