Django站点管理
站点管理
关注公众号“轻松学编程”了解更多。
项目地址GitHub:https://github.com/liangdongchang/HelloDjango.git
1、使用站点管理
-
Django中默认集成了后台数据管理页面,通过简单的配置就可以实现模型后台的Web控制台。
-
管理界面通常是给系统管理员使用的,用来完成数据的输入,删除,查询等工作。
-
如果没有集成,自己在settings中的INSTALLED_APPS添加 'django.contrib.admin’应用就好了。
INSTALLED_APPS = [ ... 'django.contrib.admin', ... ]
2、创建系统管理员
-
在 Terminal窗口上输入:
python manage.py createsuperuser
根据提示创建自己的管理员
- 密码8位以上且不能纯数字
-
管理界面设置
-
设置为中文(简体)
- settings.py中:LANGUAGE_CODE = ‘zh-hans’
-
设置时区
- TIME_ZONE=‘Asia/Shanghai’
-
添加自己的数据模型
- 在admin.py中注册
- admin.site.register(xxx)
-
3、个性化站点管理
-
创建管理类
-
class StudentAdmin(admin.ModelAdmin):
-
显示规则
-
list_display 显示字段
-
list_filter 过滤字段
-
search_fields 搜索字段
-
list_per_page 分页,每页显示多少条数据
-
ordering 排序规则
-
分组显示
fieldsets = ( ('班级',{fields:('sgrade')}), ('姓名',{fields:('sname')}), )
-
布尔值定制显示
-
定义sgender字段的显示函数
def gender(self): if self.sgender: return '男' else: return '女'
-
设置显示的标题
- gender.short_description = ‘性别’
-
设置显示字段
- list_display = (‘sname’, ‘sage’, gender)
-
-
-
修改规则
- fields 显示的字段
- exclude 不显示的字段
-
范例
# 创建自定义的Admin class StudentAdmin(admin.ModelAdmin): def sex_show(self): if self.s_sex: return '男' else: return '女' sex_show.short_description = '性别' # 显示哪些字段 list_display = ['s_name','s_age',sex_show] # 分页,每一页最多多少数据 list_per_page = 3 # 过滤器,过滤条件字段 list_filter = ['s_name','s_age'] # 搜索 search_fields = ['s_name',] # 排序 ordering = ['s_age',]
-
-
-
注册管理类
- admin.site.register(Students,StudentAdmin)
-
插入管理类的同时插入默认数据
-
创建班级的Admin
class GradeAdmin(admin.ModelAdmin): inlines = [StudentInfo]
-
创建学生信息
class StudentInfo(admin.TabularInline): model = Students extra = 2
-
注册学生管理
- admin.site.register(Grade,GradeAdmin)
-
-
定制站点信息
-
在admin中继承AdminSite
class MyAdminSite(admin.AdminSite): site_header = '我的站点管理'
- 常用定制属性
- site_header:管理网页的页头部的标题
- site_title:浏览窗口显示的页面名称
- site_url:查看站点时跳转主页路由,默认 /
- 常用定制属性
-
注册站点对象
- site = MyAdminSite()
- site.register(xxx)
-
在urls路由中修改admin的跳转
from App.admin import site url(r'^admin/',site.urls)
-
-
个性化定制
- 默认的系统模板
- django/contrib/admin/templates/admin
- 将需要重新定制的文件复制出来
- 在自己的工程中创建相对应的子目录
- 在settings中注入模板路径,子模板继承自复制的模板
- 添加自己的代码
参考代码:
- 默认的系统模板
from django.contrib import admin
# Register your models here.
from MyApp.models import Grade, Students
#定义新增班级时默认要添加的学生数据
class StudentInfo(admin.TabularInline):
model = Students
extra = 2
# admin.site.register(Grade)
class GradeAdmin(admin.ModelAdmin):
#显示字段
list_display = ('gname','gdate','ggirlnum')
#过滤条件
list_filter = ('gdate',)
#每页显示的数据条数
list_per_page = 3
#查询
search_fields = ('gname',)
#默认添加数据
inlines = [StudentInfo]
# admin.site.register(Grade)
class StudentAdmin(admin.ModelAdmin):
#转化显示格式
def getGender(self):
if self.sgender == True:
return '男'
else:
return '女'
getGender.short_description = '性别'
list_display = ('sname',getGender,'sage','sinfo','sgrade')
class MySite(admin.AdminSite):
#管理网页的页头部的标题
site_title = '我的地方'
#浏览窗口显示的页面名称
site_header = '学生管理系统'
#查看站点时跳转主页路由,默认 /
site_url = '/welcome'
mysite = MySite()
# admin.site.register(Grade,GradeAdmin)
# admin.site.register(Students,StudentAdmin)
mysite.register(Grade,GradeAdmin)
mysite.register(Students,StudentAdmin)
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~