admin后台管理是管理数据库的
目录
1 创建超级用户
使用之前我们需要创建一个超级用户,输入 python mange.py createsuperuser
按下回车后会提示输入用户名,这里如果直接按回车那么用户名就是admin
之后正常输入就可以了,我密码给的是12345678,实际工作中建议给一个复杂一点的密码
- 超级用户可以创建多个
2 进入admin管理后台
开启服务后进入 127.0.0.1/admin ,会出现这样一个界面
输入我们刚刚创建的超级用户账号与密码进入管理界面
3 查看站点
点击查看站点会返回路由 127.0.0.1:8000(主页)
4 用户与组
点击用户后的修改
可以看到我们当前创建的用户信息
- 这里是数据使用的是mysql中的auth_user。如果使用的是其他数据库也表名也相同。
如果我们点击某一个用户名,就可以修改这个用户的信息
这里我们可以看到密码是以密文的形式保存的
- 运算方式为哈希运算,哈希运算不可逆,算法pbkdf2_sha256指的就是哈希运算,哈希运算迭代了260000次,盐是哈希运算中的组成部分,最后是结果
创建后超级用户最好将每一个使用者的信息都填全,填全之后可以通过admin日志找到账号,最后找到实际的使用者
下面我们可以看到该账号的权限
- 有效是指该账号是否可用,可以理解为账号是否处于被激活状态,如果你把这个钩取消了,这个账号就登录不了了,相当于伪删除
- 工作人员状态 如果勾选代表可以登录到当前管理站点,由于我们有可能将用户账号与员工账号都放在一个表中,我们使用该选项进行区分
- 超级用户 这个拥有最高权限,可以设置别的用户的权限
在用户权限中我们可以自定义用户的权限,比如说浏览日志,改变日志这种
其中包括用户对其他表进行操作,想下面就是对图书表的增删改查
当用户过多的时候给每一个用户分配权限就比较麻烦,我们可以对 用户组 分配权限,根据每一个 用户组 的目的不同设置不同的权限,比如说运维的人员就需要给他最高权限,做图书管理的人员只给对图书表增删改查的四个权限
5 添加组
我们现在添加一个组
- 有很多能添加的地方,不一定返回这个页面才能添加
6 添加用户
- 在这里如果你的密码过于简单是不会让你创建成功的
创建成功后进入了我们刚刚看到的修改权限的页面
这个是创建用户后的初始状态
现在如果用刚创建的用户登录admin后台是登录不上去的
下面可以对这个用户设置组,并且你可以给这个用户额外的权限
修改后点击保存,这是我们就有了两个用户
7 注册数据表
我们当前在admin后台只能看到用户表
我现在想在admin后台中看到我们之前写的book_list,我们就要注册一下,我们在模型对应的应用中找到admin.py,然后加入下面这些内容
- from .models import 模型名
- admin.site.register(模型名)
这样我们就看到了book_list
- 导入后首字母会变成大写,后面会再加一个s
点开后是这样的
这里每一条数据的显示状况是根据模型类中__str__的return定的
8 添加数据
点击右上角的增加可以增加数据
- 是否显示也是我们之前自己定义的,布尔量会以复选框的形式存在
编辑完成后点击保存
可以看到我们刚刚添加的数据
9 删改数据
点击点进某一条数据,你可以对这一条数据进行删改
10 修改数据表界面
我们的用户表在admin后台中是这样的
而我们的图书列表当前是这样的
10.1 表头 list_display
我们觉得很不美观,我们简单弄一下,在admin中加入模型管理器类(类名不重要,继承的东西是一定的),然后定义属性list_display(名称固定)
列表中写的是我们模型类中的属性名,可以写全也可以不写全,写完后与注册在admin的表进行绑定
最终的效果是这样的,表头的中文是模型类的第一个参数,这个参数的名字叫做verbose_name
除了list_display还有很多其他的类属性,可以在pycharm中ctrl点击admin.ModelAdmin看一下,或者用help()也行
可以在这里看一下官方文档 The Django admin site | Django documentation | Django 我们后面简单说几个
10.2 修改链接 list_display_links
现在修改连接是放在ID中,点击ID后可以进入修改界面
我现在想让修改连接放在书名与定价中
- list_display_links的值一定要是list_display中的值
10.3 过滤器 list_filter
在用户表中有过滤器,我们也搞一个
在admin.py中加入list_filter
- 这里我们发现list_filter的内容不一定要在list_display中
10.4 搜索框 search_fields
用户表里有个搜索框,我们搞一个
我们现在想让其搜索book_name与price有效
打开页面后发现搜索框已经出来了
我们搜索HTML5
我们再搜索90
我们再搜索105
书名与定价都没有105这个值,所以它什么也没有搜到
这个采用的是模糊查询,比如我现在搜索HT,也是可以搜出来的
10.5 列表页可修改项 list_editable
我现在想在表中直接修改price与retail_price两个
- 注意list_editable的值不能与list_display_links的值重复,且一定要出现在list_display中
这样改完了点保存就行了