admin站点管理
概述:
内容发布:负责添加、修改、删除内容
公告访问
配置admin应用
在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin'(一般会自动添加)
创建管理员用户
执行<python manage.py createsuperuser> 一次输入用户名、邮箱、密码
D:\>cd D:\Python_pycharm\Python3.6.0\day34\1_project\project
D:\Python_pycharm\Python3.6.0\day34\1_project\project>python manage.py createsuperuser
报错:django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)")
解决方法:将C:\Windows\System32\drivers\etc\hosts文件中下面这名话放开:
127.0.0.1 localhost
将DATABASES中的'HOST':'localhost'改为'HOST':'127.0.0.1'
重启mysql服务
D:\Python_pycharm\Python3.6.0\day34\1_project\project>python manage.py createsuperuser
Username (leave blank to use 'asus'): sunck
Email address: 11111@qq.com (这个邮箱随便写)
Password: (要尽量长一点,输入之后看不到,我输入的是1234567890a)
Password (again):
Superuser created successfully.
然后进入http://127.0.0.1:8000/admin网页,(如果进不去,重新创建用户python manage.py runserver),登录刚刚的账号密码,会跳转到新页面
如果觉得英文不好,可以汉化。在settings中,将LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC'(111-113行左右)改为LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai',然后重新进入http://127.0.0.1:8000/admin就成功汉化了
管理数据表
修改admin.py文件 。
直接添加以下语句
from .models import Grades,Students
#注册
admin.site.register(Grades)
admin.site.register(Grades)
刷新http://127.0.0.1:8000/adminadmin页面,就会看到Grades、Students这两张表了
自定义管理页面
from .models import Grades,Students
#注册
class GradesAdmin(admin.ModelAdmin):
#列表页属性
list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete'] #要显示的字段
list_filter = ['gname'] #过滤器:过滤字段,以gname为例
search_fields = ['gname'] #搜索字段,要搜索哪个就添加哪一个,以gname为例
list_per_page = 5 #分页,(超过几条数据就分页)
#添加、修改页属性
# fields = ['ggirlnum','gboynum','gname','gdate','isDelete'] #规定属性的先后顺序
fieldsets = [("num",{"fields":['ggirlnum','gboynum']}),("base",{"fields":['gname','gdate','isDelete']})] #给属性分组
#注意fields 和fieldsets 不能同时使用
admin.site.register(Grades)
admin.site.register(Students)
在http://127.0.0.1:8000/admin/myApp/grades/add/页增加一条数据,(ggirlnum:1 gboynum:50 gname:python05 gdate:2018.8.9)保存,在数据库中查看,这条数据就存在数据库中了
关联对象
需求:在创建一个班级时可以直接添加几个学生
class Studentsnfo(admin.TabularInline):
model = Students
extra = 2 #设置默认显示条目的数量
class GradesAdmin(admin.ModelAdmin):
inlines = [StudentsInfo] #inline把StudentsInfo关联起来
布尔值显示问题
class StudentsAdmin(admin.ModelAdmin):
def gender(self):
if self.sgender:
return "男"
else:
return "女"
gender.short_description = "性别" #设置页面列的名称
list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete']
执行动作位置问题
list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete']
list_per_page = 3
actions_on_top = False#执行动作位置
actions_on_bottom = True #执行动作位置
admin.site.register(Students)
使用装饰器完成注册
将admin.site.register(Students)换成@admin.register(Students)并放在class StudentsAdmin上面
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
def gender(self):
if self.sgender:
return "男"
else:
return "女"
gender.short_description = "性别" #设置页面列的名称
list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete']
list_per_page = 3
actions_on_top = False#执行动作位置
actions_on_bottom = True #执行动作位置
#admin.site.register(Students)