#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys os.environ["DJANGO_SETTINGS_MODULE"] = 'settings' class Output: def __init__(self, stream): self.stream = stream def write(self, data): # Do nothing return None #self.stream.write(data) #self.stream.flush() def __getattr__(self, attr): return getattr(self.stream, attr) sys.stderr = Output(sys.stderr) #sys.stdout = Output(sys.stdout) def handle(* args): import django from django.core.servers.basehttp import run, AdminMediaHandler, WSGIServerException from django.core.handlers.wsgi import WSGIHandler try: if len(args) == 1: try: addr, port = args[0].split(":") except: addr = "127.0.0.1" port = args[0] else: addr = args[0] port = args[1] except: addr = '127.0.0.1' port = '8000' print addr, port admin_media_path = '' shutdown_message = '' quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C' from django.conf import settings from django.utils import translation print "\nDjango version %s, using settings %r" % (django.get_version(), settings.SETTINGS_MODULE) print "Development server is running at http://%s:%s/" % (addr, port) print "Quit the server with %s." % quit_command translation.activate(settings.LANGUAGE_CODE) try: handler = AdminMediaHandler(WSGIHandler(), admin_media_path) run(addr, int(port), handler) except WSGIServerException, e: # Use helpful error messages instead of ugly tracebacks. ERRORS = { 13: "You don't have permission to access that port.", 98: "That port is already in use.", 99: "That IP address can't be assigned-to.", } try: error_text = ERRORS[e.args[0].args[0]] except (AttributeError, KeyError): error_text = str(e) sys.stderr.write(("Error: %s" % error_text) + '\n') # Need to use an OS exit because sys.exit doesn't work in a thread #os._exit(1) except KeyboardInterrupt: if shutdown_message: print shutdown_message sys.exit(0) if __name__ == "__main__": handle(*sys.argv[1:])