站点管理

 

项目地址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位以上且不能纯数字

Django站点管理_Django

  • 管理界面设置

    • 设置为中文(简体)

      • settings.py中:LANGUAGE_CODE = ‘zh-hans’
    • 设置时区

      • TIME_ZONE=‘Asia/Shanghai’

    Django站点管理_Django_02

    • 添加自己的数据模型

      • 在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中注入模板路径,子模板继承自复制的模板
    • 添加自己的代码
      Django站点管理_Django_03
      参考代码:
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)

Django站点管理_Django_04

 

Django站点管理_Django_05