django练手( 十):扩展字段后,django用户管理后台一些功能缺失及修复方法
一、管理员账号和密码失效。
故障描述:
启动网站,在浏览器地址栏输入http://127.0.0.1:8000/admin 进入django后台的登录界面。输入我原来超级用户的账号和密码,网站提示“请输入一个正确的工作人员账户 用户名 和密码. 注意他们都是区分大小写的.”我原来设置的管理员账号和密码失效了。
解决办法:
这是因为,django已经开始使用数据库中新的数据表作为用户表。但在新表中,还没有任何数据。这个时候,需要重新建立超级用户。
二、管理界面用户管理功能丢失。
故障描述:
新建一个超级用户admin,密码仍旧是123456。登录管理后台,发现用户管理的功能没有了。如下图:
原因分析:
查了很多资料,得知造成这个问题得原因是:django在编写管理后台得功能得代码时,有些地方并没有完全从setting.py 中的AUTH_USER_MODEL = 'app.MyUser'
中取数据模型。我只要在django得源码中,找到这个位置,并把它修改成我新建得myuser表就可以了。
处理方法:
造成这个问题的代码的位置在django.contrib.auth.admin组件下。打开这个组件的原代码,找到引用原来User模型的位置,把它修改成MyUser模型就可以了。具体的修改方法见下图:
修改后打开管理后台,可以看到用户管理的功能已经出现了。
四、在用户管理功能里添加我自定义的phone_num和address字段。
故障描述:
在用户管理界面新增一个用户zhangsan,输入密码,保存后。进入用户信息的二次编辑界面。但是,这个界面并没有我自定义的phone_num,和address。怎么解决这个问题呢?
解决办法:
同样在django.contrib.auth.admin组件下,找到UserAdmin类,把我自定义字段的内容加进去就可以了。具体的添加方法如下图:
添加后,这两个字段就出现在用户管理界面上了。如下图:
至此,整个网站,已经有了一个带导航的页面,一个管理后台。而且,这个管理后台可以注册用户。但怎么实现用户的自主注册,登录呢?且看下篇。