站点管理

  • 内容发布的部分由网站的管理员负责,包括查看、添加、修改、删除数据
    • 开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块
  • 在Django项目中默认启用Admin管理站点
    • 列表页选项
    • 编辑页选项
    • 重写模板

准备工作

  • 启用mysql数据库+定义AreaInfo模型类+创建管理员+注册模型类

  • 启用mysql数据库

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.mysql',
              'NAME': 'Bookdb',
              'HOST': 'localhost',
              'PORT': '3306',
              'USER': 'root',
              'PASSWORD': 'mysql',
          }
      }
    
  • models.py文件中,定义地区模型类AreaInfo

    • 之前在Bookdb数据库中使用过表areainfo,所以不需要再迁移

      # coding: utf-8
      
      from django.db import models
      
      # 地区列表信息
      class AreaInfo(models.Model):
        name = models.CharField(max_length=30) #名称
        parent = models.ForeignKey('self',null=True,blank=True) #关系
      
        # 元类信息 :修改表名
        class Meta:
            db_table = 'areainfo'
      
  • 创建管理员的用户名和密码

    • python manage.py createsuperuser
    • 按提示填写用户名、邮箱、密码
  • admin.py文件中,将地区模型类注册到后台站点

      # coding: utf-8
    
      from django.contrib import admin
      from models import *
    
      # 注册地区模型类
      admin.site.register(AreaInfo)
    
  • 输入网址http://127.0.0.1:8000/admin/,登陆到后台站点

  • 浏览注册地区模型类后的站点界面

    • 此时就可以进行查看、添加、修改、删除操作

  • 点击进入Areainfo

    • 显示的是模型列表,不方便查看。需要重写模型的__str__显示指定信息

  • 重写模型的__str__

      # 显示name
      def __str__(self):
          return self.name.encode('utf-8')
    

控制站点管理页的展示

  • ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式
  • 注册模型类前定义管理类AreaAdmin

      # 定义模型类的站点管理类
      class AreaAdmin(admin.ModelAdmin):
          pass
    
  • 管理类有两种使用方式:以下两种二选一

    • 注册参数
    • 装饰器
  • 注册的参数

      # 注册地区模型类和模型类的站点管理类
      admin.site.register(AreaInfo, AreaAdmin)
    
  • 注册的装饰器

      @admin.register(AreaInfo)
      class AreaAdmin(admin.ModelAdmin):
          pass
    

接下来就可以在类AreaAdmin中控制列表页、增加修改页展示效果