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)

这里写图片描述

猜你喜欢

转载自blog.csdn.net/lm_is_dc/article/details/80425141
今日推荐