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

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',就可以看到中文的管理界面了。

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

Django实战(21):使用内置的Amin管理用户的更多相关文章

  1. 《Python高效开发实战》实战演练——内置Web服务器4

    <Python高效开发实战>实战演练——开发Django站点1 <Python高效开发实战>实战演练——建立应用2 <Python高效开发实战>实战演练——基本视图 ...

  2. VS2019 开发Django(九)------内置模板和过滤器

    导航:VS2019开发Django系列 紧接上篇,继续介绍Django中的模板,考虑可能篇幅过长,所以分为两部分来讲,今天的主要内容: 1)内置模板和过滤器 母版,继承关系.头部导航和页脚,是需要与其 ...

  3. Spring Cloud Gateway实战之五:内置filter

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Flex 内置验证器—验证用户输入

    今晚对于Flex中的Validator类(所有验证器的父类)测试一下 ---->其中常用的验证类有StringValidator,NumberValidator,DateValidator 测试 ...

  5. Crusher Django Tutorial(5) 使用内置管理员系统

    http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial5-using-admin.html 顺便学习一下FQ Crush ...

  6. Django Form 的主要内置字段介绍

    修改 urls.py,添加 path('field.html', views.field), 在 templates 下创建 field.html, 内容如下: <!DOCTYPE html&g ...

  7. Django之from.Form内置字段

    from django import forms Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内 ...

  8. Spring Cloud Gateway实战之四:内置predicate小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. 30、Django实战第30天:修改邮箱和用户信息

    修改个人邮箱需要完成两个接口,一个是获取验证码,一个是新的邮箱和验证码是否匹配 1.编辑users.views.py class SendEmailCodeView(LoginRequiredMixi ...

随机推荐

  1. linux下常用的几个时间函数:time,gettimeofday,clock_gettime,_ftime

    time()提供了秒级的精确度 1.头文件 <time.h> 2.函数原型 time_t time(time_t * timer) 函数返回从TC1970-1-1 0:0:0开始到现在的秒 ...

  2. 递归和静态static

    function sum($n){ if($==1){ return 1; } return $n+sum($n-1); } echo sum(100); ---------------------- ...

  3. SVN 使用笔记

    SVN中检出 和 导出 的区别 检出得到的文件夹中,是受SVN客户端控制的,对其进行文件或文件夹的增删改操作都会被SVN客户端识别出来,对其可以进行update.commit操作.其中含有.svn隐藏 ...

  4. [php]php总结(1)

    1.变量可以连续传递赋值2.var_dump()打印变量信息3.isset()与unset()4.可变变量$p = "temp";$$p则表示$temp变量,即最右边的变量的值为下 ...

  5. HDFS的java接口——简化HDFS文件系统操作

    今天闲来无事,于是把HDFS的基本操作用java写出简化程序出来给大家一些小小帮助! package com.quanttech; import org.apache.hadoop.conf.Conf ...

  6. POJ 1986 Distance Queries (Tarjan算法求最近公共祖先)

    题目链接 Description Farmer John's cows refused to run in his marathon since he chose a path much too lo ...

  7. CF448C Painting Fence

    传送门 Descriptionzed 最近总是受到 Farmer 的困扰,因此他在自家的门前插了一排栅栏以防农气的入侵.栅栏由 N 个竖条栅栏横向组成,每个竖条栅栏宽度为 1.过了一段时间,zed 觉 ...

  8. Jetson TX1 安装Kinect驱动

    1.添加Universe源 $ sudo apt-add-repository universe $ sudo apt-get update 2.安装编译工具和依赖项 $ sudo apt-get i ...

  9. solr4.10.3部署到tomcat——(十)

    0. 准备环境:

  10. Struts2笔记1:--Struts2原理、优点、编程流程、6大配置文件以及核心配置文件struts.xml

    Struts2原理(底层使用的是Servlet的doFilter方法): Struts2优点: 第一个Struts程序: 在开发Struts程序之前,首先要导入额外的jar包,基本需求的是14个jar ...