summaryrefslogtreecommitdiff
path: root/django/bin/django-admin.py
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-07-18 15:25:58 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-07-18 15:25:58 +0000
commitb68c478aa5d890e76aae6e2f695220505618c8e0 (patch)
treeec95c517543dc262e129a2a0ed6af9d90a85de28 /django/bin/django-admin.py
parentfbfa3d603ec12bf3789df558e9fd2f9e7bd0eb0f (diff)
Added 'django-admin.py runserver', which starts a lightweight development server running Django on a local port
git-svn-id: http://code.djangoproject.com/svn/django/trunk@174 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/bin/django-admin.py')
-rwxr-xr-xdjango/bin/django-admin.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/django/bin/django-admin.py b/django/bin/django-admin.py
index 9a19a492e4..96738461b1 100755
--- a/django/bin/django-admin.py
+++ b/django/bin/django-admin.py
@@ -362,6 +362,30 @@ def startapp(app_name, directory):
startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory."
startapp.args = "[appname]"
+def runserver(port):
+ "Starts a lightweight Web server for development."
+ from django.core.servers.basehttp import run, WSGIServerException
+ from django.core.handlers.wsgi import WSGIHandler
+ if not port.isdigit():
+ sys.stderr.write("Error: %r is not a valid port number.\n" % port)
+ sys.exit(1)
+ print "Starting server on port %s. Go to http://127.0.0.1:%s/ for Django." % (port, port)
+ try:
+ run(int(port), WSGIHandler())
+ 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.",
+ }
+ try:
+ error_text = ERRORS[e.args[0].args[0]]
+ except (AttributeError, KeyError):
+ error_text = str(e)
+ sys.stderr.write("Error: %s\n" % error_text)
+ sys.exit(1)
+runserver.args = '[optional port number]'
+
def usage():
sys.stderr.write("Usage: %s [action]\n" % sys.argv[0])
@@ -376,6 +400,7 @@ def usage():
ACTION_MAPPING = {
'adminindex': get_admin_index,
# 'dbcheck': database_check,
+ 'runserver': runserver,
'sql': get_sql_create,
'sqlall': get_sql_all,
'sqlclear': get_sql_delete,
@@ -406,6 +431,12 @@ if __name__ == "__main__":
usage()
ACTION_MAPPING[action](name, os.getcwd())
sys.exit(0)
+ elif action == 'runserver':
+ if len(sys.argv) < 3:
+ port = '8000'
+ else:
+ port = sys.argv[2]
+ ACTION_MAPPING[action](port)
elif action == 'dbcheck':
from django.core import meta
mod_list = meta.get_all_installed_modules()