Django实战(21):使用内置的Amin管理用户

到目前为止,我们开发的所有功能都是匿名访问的,这显然不够安全。通常我们会要求注册的用户通过用户名和密码登录,只有登录后的用户才可以管理产品。套用专业的说法就是:第一步是认证,验证用户是否是他所宣称的那个人;第二步是授权,验证用户是否拥有执行某种操作的权限。

Django已经提供了一个django.contrib.auth应用来处理登录、登出和权限验证,同时还提供了 django.contrib.admin应用可以进行用户管理(admin应用还有很多其他的功能)。所以我们只需要将这些app插入到我们的站点,就 可以实现登录和用户管理的大部分功能。

本节先介绍如何进行用户管理。

我们前面已经介绍过在Django中使用session,方法是打开'django.contrib.sessions'应用。该app是django.contrib.auth的基础,同时从该节我们也知道了如何在Django中加入应用,所以让我们快速行动起来:

首先在depot/settings.py中,打开MIDDLEWARE_CLASSES中的CommonMiddleware、SessionMiddleware和AuthenticationMiddleware:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

同样在在depot/settings.py中,打开INSTALLED_APPS中的auth、contenttypes、sessions和admin应用:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    #'django.contrib.sites',
    #'django.contrib.messages',
    #'django.contrib.staticfiles',
    
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'depot.depotapp',
    'django-groundwork',
    'djangorestframework',
)

在depot/urls.py中,在头部增加:

from django.contrib import admin
admin.autodiscover()

然后增加admin的urlpattern:

(r'^admin/', include(admin.site.urls)),

最后运行$python manage.py syncdb,以创建需要的数据库表。在此过程中会询问你创建一个管理员账号。如果没有创建,也可以手工运行$python manage.py createsuperuser再次创建:

$ python manage.py createsuperuser
Username (Leave blank to use 'holbrook'):
E-mail address: a@b.com
Password:
Password (again):
Superuser created successfully.
holbrook-wongdemacbook-pro:depot holbrook$ python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'holbrook'):
E-mail address: wanghaikuo@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
No fixtures found.

此时访问http://localhost:8000/admin/,用刚才创建的用户名和密码登录,就可以看到Django内置的管理界面,其中 就有用户管理的功能。如果你对英文界面很不爽,只需要在depot/settings.py中设置LANGUAGE_CODE = 'zh-CN',就可以看到中文的管理界面了。

你可以创建几个用户,在下一节中会用到。

posted on 2016-08-19 15:54  邬兴亮  阅读(282)  评论(0编辑  收藏  举报

导航