mirror of https://github.com/django/django.git
Added 'django-admin createsuperuser' and updated tutorial to use it instead of manually creating the user in the Python interactive prompt
git-svn-id: http://code.djangoproject.com/svn/django/trunk@261 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
0500321a4b
commit
d330be0169
|
@ -5,6 +5,7 @@ import os, sys
|
||||||
|
|
||||||
ACTION_MAPPING = {
|
ACTION_MAPPING = {
|
||||||
'adminindex': management.get_admin_index,
|
'adminindex': management.get_admin_index,
|
||||||
|
'createsuperuser': management.createsuperuser,
|
||||||
# 'dbcheck': management.database_check,
|
# 'dbcheck': management.database_check,
|
||||||
'runserver': management.runserver,
|
'runserver': management.runserver,
|
||||||
'sql': management.get_sql_create,
|
'sql': management.get_sql_create,
|
||||||
|
@ -63,7 +64,7 @@ def main():
|
||||||
print_error("An action is required.", sys.argv[0])
|
print_error("An action is required.", sys.argv[0])
|
||||||
if not ACTION_MAPPING.has_key(action):
|
if not ACTION_MAPPING.has_key(action):
|
||||||
print_error("Your action, %r, was invalid." % action, sys.argv[0])
|
print_error("Your action, %r, was invalid." % action, sys.argv[0])
|
||||||
if action == 'init':
|
if action in ('createsuperuser', 'init'):
|
||||||
ACTION_MAPPING[action]()
|
ACTION_MAPPING[action]()
|
||||||
elif action in ('startapp', 'startproject'):
|
elif action in ('startapp', 'startproject'):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -373,6 +373,48 @@ def startapp(app_name, directory):
|
||||||
startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory."
|
startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory."
|
||||||
startapp.args = "[appname]"
|
startapp.args = "[appname]"
|
||||||
|
|
||||||
|
def createsuperuser():
|
||||||
|
"Creates a superuser account."
|
||||||
|
from django.core import validators
|
||||||
|
from django.models.auth import users
|
||||||
|
import getpass
|
||||||
|
try:
|
||||||
|
while 1:
|
||||||
|
username = raw_input('Username (only letters, digits and underscores): ')
|
||||||
|
if not username.isalnum():
|
||||||
|
sys.stderr.write("Error: That username is invalid.\n")
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
users.get_object(username__exact=username)
|
||||||
|
except users.UserDoesNotExist:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
sys.stderr.write("Error: That username is already taken.\n")
|
||||||
|
while 1:
|
||||||
|
email = raw_input('E-mail address: ')
|
||||||
|
try:
|
||||||
|
validators.isValidEmail(email, None)
|
||||||
|
except validators.ValidationError:
|
||||||
|
sys.stderr.write("Error: That e-mail address is invalid.\n")
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
while 1:
|
||||||
|
password = getpass.getpass()
|
||||||
|
password2 = getpass.getpass('Password (again): ')
|
||||||
|
if password == password2:
|
||||||
|
break
|
||||||
|
sys.stderr.write("Error: Your passwords didn't match.\n")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
sys.stderr.write("\nOperation cancelled.\n")
|
||||||
|
sys.exit(1)
|
||||||
|
u = users.create_user(username, email, password)
|
||||||
|
u.is_staff = True
|
||||||
|
u.is_active = True
|
||||||
|
u.is_superuser = True
|
||||||
|
u.save()
|
||||||
|
print "User created successfully."
|
||||||
|
createsuperuser.args = ''
|
||||||
|
|
||||||
def runserver(port):
|
def runserver(port):
|
||||||
"Starts a lightweight Web server for development."
|
"Starts a lightweight Web server for development."
|
||||||
from django.core.servers.basehttp import run, WSGIServerException
|
from django.core.servers.basehttp import run, WSGIServerException
|
||||||
|
|
|
@ -10,20 +10,32 @@ application and will focus on Django's automatically-generated admin site.
|
||||||
.. _Tutorial 1: http://www.djangoproject.com/documentation/tutorial1/
|
.. _Tutorial 1: http://www.djangoproject.com/documentation/tutorial1/
|
||||||
|
|
||||||
.. admonition:: Philosophy
|
.. admonition:: Philosophy
|
||||||
|
|
||||||
Generating admin sites for your staff or clients to add, change and delete
|
Generating admin sites for your staff or clients to add, change and delete
|
||||||
content is tedious work that doesn't require much creativity. For that reason,
|
content is tedious work that doesn't require much creativity. For that reason,
|
||||||
Django entirely automates creation of admin interfaces for models.
|
Django entirely automates creation of admin interfaces for models.
|
||||||
|
|
||||||
Django was written in a newsroom environment, with a very clear separation
|
Django was written in a newsroom environment, with a very clear separation
|
||||||
between "content publishers" and the "public" site. Site managers use the
|
between "content publishers" and the "public" site. Site managers use the
|
||||||
system to add news stories, events, sports scores, etc., and that content is
|
system to add news stories, events, sports scores, etc., and that content is
|
||||||
displayed on the public site. Django solves the problem of creating a unified
|
displayed on the public site. Django solves the problem of creating a unified
|
||||||
interface for site administrators to edit content.
|
interface for site administrators to edit content.
|
||||||
|
|
||||||
The admin isn't necessarily intended to be used by site visitors; it's for site
|
The admin isn't necessarily intended to be used by site visitors; it's for site
|
||||||
managers.
|
managers.
|
||||||
|
|
||||||
|
Create a user account
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Run the following command to create a superuser account for your admin site::
|
||||||
|
|
||||||
|
django-admin.py createsuperuser --settings="myproject.settings.main"
|
||||||
|
|
||||||
|
(Note: You can use either "myproject.settings.main" or "myproject.settings.admin"
|
||||||
|
here. They both reference the same database.)
|
||||||
|
|
||||||
|
The script will prompt you for a username, e-mail address and password (twice).
|
||||||
|
|
||||||
Start the development server
|
Start the development server
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
@ -49,28 +61,6 @@ admin's login screen:
|
||||||
.. image:: http://media.djangoproject.com/img/doc/tutorial/admin01.png
|
.. image:: http://media.djangoproject.com/img/doc/tutorial/admin01.png
|
||||||
:alt: Django admin login screen
|
:alt: Django admin login screen
|
||||||
|
|
||||||
Create a user account
|
|
||||||
=====================
|
|
||||||
|
|
||||||
You can't log in, though, because you haven't created an admin user account
|
|
||||||
yet. Drop into the Python interactive interpreter and type this::
|
|
||||||
|
|
||||||
# The function django.models.auth.users.create_user() creates a new user
|
|
||||||
# and returns the new auth.User object.
|
|
||||||
# Don't use 'username' and 'password'. Those are just examples.
|
|
||||||
>>> from django.models.auth import users
|
|
||||||
>>> u = users.create_user('username', 'your_email@domain.com', 'password')
|
|
||||||
|
|
||||||
# But we're not done. We need to explicitly set is_staff and is_active to
|
|
||||||
# allow this user to access the admin. Might as well make it a superuser,
|
|
||||||
# too.
|
|
||||||
u.is_staff = True
|
|
||||||
u.is_active = True
|
|
||||||
u.is_superuser = True
|
|
||||||
|
|
||||||
# Remember, call the save() method to save changes.
|
|
||||||
u.save()
|
|
||||||
|
|
||||||
Enter the admin site
|
Enter the admin site
|
||||||
====================
|
====================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue