《Django REST framework 入门到精通》视频课程上线了,全网稀缺资源,深度源码剖析,进阶高手之路!点击链接查看详情

3. admin后台

阅读: 34272     评论:12

在我们开发的初期,没有真实的用户数据,也没有完整的测试环境,为了测试和开发的方便,通常我们会频繁地使用Django给我们提供的Admin后台管理界面,创建测试用例,观察模型效果等等。

一、 在admin中注册模型

admin后台本质上是Django给我们提供的一个app,默认情况下,它已经在settings中注册了,如下所示的第一行!同样的还有session会话框架,后面我们会使用的。

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',     # 看这里
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',      # 看这里
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'login',
]

进入login/admin.py文件,代码如下:

from django.contrib import admin

# Register your models here.

from . import models

admin.site.register(models.User)

暂时简单点,直接注册就好了。

二、创建超级管理员

Django的admin后台拥有完整的较为安全的用户认证和授权机制,防护等级还算可以。

要进入该后台,需要创建超级管理员,该管理员和我们先前创建的User用户不是一个概念,要注意区别对待。

同样在Pycharm的终端中,执行下面的命令:

python manage.py createsuperuser

用户名、邮箱和密码请自行设定,但一定不要忘记。密码最好有一定强度,并且不能太简单和普遍,会有提示,我这里强制通过了。

(venv) D:\work\2019\for_test\mysite>python manage.py createsuperuser
用户名 (leave blank to use 'feixuelym'): admin
电子邮件地址: admin@admin.com
Password:
Password (again):
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

三、 使用Admin后台

创建好超级管理员后,就可以启动我们的开发服务器了,然后在浏览器中访问http://127.0.0.1:8000/admin/地址,可以看到如下的登录界面:

image

输入我们先前创建的超级管理员账户,进入管理界面:

image

注意,图中下方的认证和授权是admin应用自身的账户管理,上面的LOGIN栏目才是我们创建的login应用所对应的User模型。

点击Login栏目中的用户链接,进入用户列表界面,发现是空的,因为我们当前没有任何用户。点击右上方的增加用户按钮,我们创建几个测试用户试试:

通过输入不同的数据,我们看到Email会有地址合法性检查,性别有个选择框,非常的人性化。

image

但是,实际上这里还有点小问题,那就是密码相关。密码不能保存为明文,这个问题我们后面再解决;其次,不可以这么随意的修改和设置密码,为了展示的方便性,我们先这样。

这里我随便创建了三个测试账号,如下所示:

image

admin的使用和配置博大精深,但在本实战项目里,我们暂时把它当做一个数据库管理后台使用。


 2. 设计数据模型 4. url路由和视图 

评论总数: 12


点击登录后方可评论

user_image

请问为什么我的用户连管理员也显示出来了?需要在哪里坐下配置。 还有就是admin添加用户,密码如何实现加密?



user_image

上面那些路径怎么变成中文,就是首页>login>用户,为了请教特地注册的微博。。。



user_image

name输入为中文时,崩溃了??怎么设置呢应该



user_image

登录后显示 禁止访问 (403) 把 csrf注释掉也没用。。该怎么弄啊



user_image

本质上是csrf还在发挥作用



user_image

admin后台注册的用户,login登陆时显示用户不存在



user_image

能够登陆成功,也可以成功执行各种操作,但会在pycharm控制台报错 self.status.split(' ',1)[0], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split'



user_image

name最好用字母。



user_image

为什么创建了三个用户,名字都是User object ,根本不是我自己创建的名字



user_image

因为你没有在User模型中定义__str__方法



user_image

为什么我站点管理里面没有LOGIN的用户啊,我都注册了啊



user_image

在admin.py里注册了吗?