4

概述

负责添加、修改、删除内容,开发这些重复的功能是一件没有创造力的事情。因此Django会根据定义的模型自动生成管理模块

配置Admin应用

在settings.py文件中的INSTALL_APPS中添加'django.contrib.admin'

默认已经配置

创建管理员用户

python manage.py createsuperuser

按提示依次输入用户名、邮箱、密码

登录

浏览器中输入 127.0.0.1:8000/admin

汉化

修改settins.py文件中的配置:

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

管理数据表

引用目录下的admin.py文件中注册模型

from django.contrib import admin

# Register your models here.
from myApp.models import Grade, Student
admin.site.register(Grade)
admin.site.register(Student)

自定义管理界面

ModelAdmin类是模型在Admin界面中的表现形式,通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式

属性说明

clipboard.png

关联对象

在添加班级时可以直接添加几个学生

class StudentInline(admin.TabularInline):
    model = Student
    extra = 2  # 可以添加2个学生
    
    
class GradeAdmin(admin.ModelAdmin):
    inlines = [StudentInline]
    list_display = ['pk', 'name', 'boyNum', 'girlNum', 'isDelete']

admin.site.register(Grade, GradeAdmin)

布尔值的显示问题

class StudentAdmin(admin.ModelAdmin):
    def sex(self):
        if self.sex:
            return '男'
        else:
            return '女'

    sex.short_description = '性别'

    def content(self):
        return self.content

    content.short_description = '内容'

    # 列表页属性
    list_display = ['pk', 'name', 'age', sex, content,
                    'grade', 'isDelete']

执行动作的位置

class StudentAdmin(admin.ModelAdmin):
    actions_on_bottom = True
    actions_on_top = True

clipboard.png

使用装饰器注册

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    actions_on_bottom = True
    actions_on_top = True
    def sex(self):
        if self.sex:
            return '男'
        else:
            return '女'

    sex.short_description = '性别'

    def content(self):
        return self.content

    content.short_description = '内容'

    # 列表页属性
    list_display = ['pk', 'name', 'age', sex, content,
                    'grade', 'isDelete']

    list_filter = ['grade']
    search_fields = ['content']
    list_per_page = 15
    # 添加,修改页属性
    # fields = ['name','age','sex','content','grade', 'isDelete']
    fieldsets = [
        ('base', {'fields': ['name', 'age', 'grade']}),
        ('more', {'fields': ['sex', 'content', 'grade', 'isDelete']}),
    ]

# admin.site.register(Student, StudentAdmin)

Xadmin自学

安装

https://github.com/sshwsfc/xa...

GitHub上下载 xadmin安装包,由于安装会报错,编码问题,需要修改压缩包中的一个文件,将压缩包中的README.rst 替换为自己新建的同样名字的空文件。 然后cmd进入该目录 执行安装

pip install xadmin-master.zip

配置

settings.py

INSTALLED_APPS = [
    'xadmin',
    'crispy_forms',
    'reversion',
]

主路由urls.py

import xadmin
xadmin.autodiscover()

# version模块自动注册需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
    url(r'xadmin/', include(xadmin.site.urls)),
]

如果出现no such table 是由于数据库中没有xadmin的表的问题,可以删除数据库,执行迁移。。

7-django——文件上传_分页_ajax_富文本_celery


rottengeek
476 声望78 粉丝

后续python相关内容移步简书与知乎(python进阶,爬虫,数据分析,机器学习,自然语言处理,知识图谱)