• Django的Admin站点管理


    一、概述

      内容发布:负责添加、修改、删除内容

      公告访问

    二、配置Admin应用

      在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin',默认是添加好的

    三、创建管理员用户

      在项目的根目录下,执行命令:python manage.py createsuperuser

    依次输入用户名、邮箱、密码(密码不能太复杂)

    四、汉化

      修改setting.py

    LANGUAGE_CODE = 'zh-Hans'
    TIME_ZONE = 'Asia/Shanghai' 

    五、管理数据表

    准备工作:在admin.py文件中添加

    1 from .models import Grades,Students # . 表示同目录下的文件
    2  # 注册模型类
    3 admin.site.register(Grades)
    4 admin.site.register(Students)

    自定义管理界面:

      1、代码

    # 管理班级界面,需要注册一个相应的管理类
    class GradesAdmin(admin.ModelAdmin): #需要继承
        #列表页属性
        list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete']
        list_filter = ['gname']
        search_fields = ['gname']
        list_per_page = 5 # 每五条一页
        # 添加、修改页属性
       # fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete']
       fieldsets = [
         ("num", {"fields":['ggirlnum', 'gboynum']}),
         ("base", {"fields":['gname', 'gdate', 'isDelete']}),
      ]
       # 写好的管理类需要加到注册里
       admin.site.register(Grades, GradesAdmin)

       2、属性说明

        列表属性:

          list_display:显示字段

          list_filter:过滤字段,页面右上方显示出过滤器按钮

          search_fields:搜索字段,页面左上方显示出搜索框

          list_per_page:分页

        添加、修改页属性:

          fields:属性的先后顺序

          fieldsets:给属性分组

          注意:fields与fieldsets不能同时使用

      3、关联对象:

    # 准备工作,记得注册
    class StudentsAdmin(admin.ModelAdmin):
        list_display = ['pk', 'sname', 'sage', 'sgender', 'scontend', 'sgrade', 'isDelete']
        list_per_page = 2

      需求:在创建一个班级时可以直接添加两个学生

    # 在admin.py添加一个类
    class StudentsInfo(admin.Tabularlnline): # 也可以继承admin.StackedInline,两张的区别在于页面显示效果不同
        model = Students
        extra = 2
    # 注意:要在GradesAdmin类添加一行;为了节省空间,剩余的代码就不往上填了
    class GradesAdmin(admin.ModelAdmin):
        inlines = [StudentsInfo]

       4、布尔值显示替换成想要的参数:

    # 增加函数gender()
    class StudentsAdmin(admin.ModelAdmin):
        def gender(self):
            if self.sgender:
                return ''
            else:
                return ''
        # 将页面列的字段替换成想要显示的字段
        gender.short_description = "性别"
        # 将函数gender作为参数传入,代替sgender
        list_display = ['pk', 'sname', 'sage', gender, 'scontend', 'sgrade', 'isDelete']

     使用装饰器完成注册:

    # 用装饰器来代替之前的注册函数
    @admin.register(Students)
    class StudentsAdmin(admin.ModelAdmin):

    完结

  • 相关阅读:
    大道至简第二章读后感
    读大道至第一章简有感
    二次封装Response类
    视图与序列化传参
    Codeforces Round #523 (Div. 2) F. Katya and Segments Sets (交互题+思维)
    Codeforces Round #510 (Div. 2) D. Petya and Array(离散化+反向树状数组)
    Codeforces 1060E(思维+贡献法)
    Codeforces Round #520 (Div. 2) E. Company(dfs序判断v是否在u的子树里+lca+线段树)
    Codeforces Round #513 by Barcelona Bootcamp C. Maximum Subrectangle(双指针+思维)
    Educational Codeforces Round 51 F. The Shortest Statement(lca+最短路)
  • 原文地址:https://www.cnblogs.com/Rain2017/p/10269665.html
Copyright © 2020-2023  润新知