本篇主要讲解Django框架的admin站点管理。
1. admin站点管理
django本身提供了admin站点管理应用,在每一个app提供了admin.py脚本文件,可以将当前应用的models.py中模型类,添加到admin站点中,以方便管理员管理模型对应的数据。
1.1 创建管理员账号(超级管理员账号)
python manage.py createsuperuser
如上图所示,设置的用户名,邮箱地址,密码均为:admin@qq.com
接下来,运行程序
python manage.py runserver
输入:http://127.0.0.1:8000/admin/ 回车之后,跳转页面
1.1添加用户
成功添加用户信息,用户名为admin,密码为admin@qq.com(注意,这个和超级管理员账号不一样)
此时注意下图的状态
退出登录状态,重新登录
然后用新添加的用户登录,报如下错误
解决办法:
用超级管理员账号登录,进区修改用户的状态
给此用户增加Staff status
操作完如下
再次用此账号登录测试
此时在数据库里,下面几张表比较重要
总结:
启动服务之后,可以访问/admin进入站点后台管理页面。
可以尝试创建后台管理人员账号,将activate和staff status勾选上。并添加login应用的管理User模型的权限。
1.2 将login应用中的模型类添加到admin.py中
在login应用的admin.py文件添加代码如下:
from django.contrib import admin
from .models import User
# Register your models here.
admin.site.register(User)
保存之后,重新刷新站点页面
如果会有四条数据,查看数据库可知,保存了四条数据
1.3添加用户信息
此时修改一下代码,使user_id可以为空
user_id = models.IntegerField(primary_key=True,blank=True)
下面添加用户
此时再看数据库数据,多了一条
1.4 添加用户界面设置中文
修改login文件里面的models.py代码
保存之后,刷新admin页面
1.5 修改ADD user 中文
在login模块models.py添加代码
class Meta:
verbose_name = '会员'
verbose_name_plural = verbose_name
效果如下
1.6 修改语言和时区
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
刷新站点页面,效果如下:
1.6 修改站点的列
在login的admin.py修改代码如下:
from django.contrib import admin
from .models import User
# Register your models here.
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 过滤器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')
admin.site.register(User,UserAdmin)
1.7 修改模型类
注意添加Field字段参数的blank和verbase_name
在上面代码已经修改下面的报错,下图看一下即可。
保存刷新,界面如下
总结
站点有两种写法
方法一:
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 过滤器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')
admin.site.register(User,UserAdmin)
方法二
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 过滤器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')