zoukankan      html  css  js  c++  java
  • 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):

    完结

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/Rain2017/p/10269665.html
Copyright © 2011-2022 走看看