第九章 admin后台系统

本文详细介绍了Django后台管理系统的配置,包括如何实现中文显示、创建超级管理员、模型注册以及自定义展示。同时,展示了如何修改admin首页的项目显示名称、模型显示名称和网页标题。此外,还提及了admin的二次开发可能性。
摘要由CSDN通过智能技术生成

第九章admin后台系统

9.1了解admin

1.admin后台管理系统以英文显示,想要将后台内容以中文显示,添加中间件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    # 使用中文
    'django.middleware.locale.LocaleMiddleware',
   .......

2.创建超级管理员的账号与密码(qwert,123456)

python manage.py createsuperuser
#用户名邮箱可以为空格,用户名为空,默认为计算机的用户名
Username (leave blank to use 'administrator'): qwert
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

3.访问admin的路由地址,使用创建的用户名和密码登录

4.将app定义的模型展示在后台系统,需要在admin.py文件中编写:

from django.contrib import admin
from .models import *


# 方法一:
# 将模型直接注册到admin后台
# admin.site.register(PersonInfo)

# 方法二:
# 自定义PersonInfoAdmin类并继承ModelAdmin
# 注册方法一,使用装饰器将PersonInfoAdmin和Product绑定
@admin.register(PersonInfo)
class PersonInfoAdmin(admin.ModelAdmin):
    # 设置显示的字段
    list_display = ['id', 'name', 'age']
# 注册方法二
# admin.site.register(PersonInfo, PersonInfoAdmin)
@admin.register(Vocation)
class VocationAdmin(admin.ModelAdmin):
    # 在数据新增或修改的页面设置可编辑的字段
    # fields = ['job','title','payment','person']

    # 在数据新增或修改的页面设置不可编辑的字段
    # exclude = []

    # 改变新增或修改页面的网页布局
    fieldsets = (
        ('职业信息', {
            'fields': ('job', 'title', 'payment')
        }),
        ('人员信息', {
            # 设置隐藏与显示
            'classes': ('collapse',),
            'fields': ('person',),
        }),
    )

    # 将下拉框改为单选按钮
    # admin.HORIZONTAL是水平排列
    # admin.VERTICAL是垂直排列
    radio_fields = {'person': admin.VERTICAL}

    # 在数据新增或修改的页面设置可读的字段,不可编辑
    # readonly_fields = ['job',]

    # 设置排序方式,['id']为升序,降序为['-id']
    ordering = ['id']

    # 设置数据列表页的每列数据是否可排序显示
    sortable_by = ['job', 'title']

    # 在数据列表页设置显示的模型字段
    list_display = ['id', 'job', 'title', 'payment', 'person']

    # 为数据列表页的字段id和job设置路由地址,该路由地址可进入数据修改页
    # list_display_links = ['id', 'job']

    # 设置过滤器,如有外键,应使用双下画线连接两个模型的字段
    list_filter = ['job', 'title', 'person__name']

    # 在数据列表页设置每一页显示的数据量
    list_per_page = 100

    # 在数据列表页设置每一页显示最大上限的数据量
    list_max_show_all = 200

    # 为数据列表页的字段id和job设置编辑状态
    list_editable = ['job', 'title']

    # 设置可搜索的字段
    search_fields = ['job', 'title']

    # 在数据列表页设置日期选择器
    date_hierarchy = 'recordTime'

    # 在数据修改页添加“另存为”功能
    save_as = True

    # 设置“动作”栏的位置
    actions_on_top = False
    actions_on_bottom = True

9.3admin首页设置

1.修改项目应用的显示名称

将admin首页的项目app名称改为中文’网站首页’,在项目app目录下的__init__.py设置:

#app/__init__.py
from django.apps import AppConfig
import os
# 修改App在Admin后台显示的名称
# default_app_config的值来自apps.py的类名
default_app_config = 'index.IndexConfig'

# 获取当前App的命名
def get_current_app_name(_file):
    return os.path.split(os.path.dirname(_file))[-1]

# 重写类IndexConfig
class IndexConfig(AppConfig):
    name = get_current_app_name(__file__)
    verbose_name = '网站首页'

2.修改模型的显示名称

只设置verbose_name = ‘人员信息’,在后台显示为:‘人员信息s’,要把‘s’删除,需要设置verbose_name_plural= ‘人员信息’

#app/models.py
from django.db import models

# Create your models here.
class PersonInfo(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    age = models.IntegerField()

    def __str__(self):
        return self.name
    class Meta:
        verbose_name = '人员信息'
        verbose_name_plural = '人员信息'

3.修改网页标题

在项目应用的admin.py设置admin的site_title和site_header属性,如果项目有多个app应用,只需在某个项目应用的admin.py中设置一次即可。

#app/admin.py
from django.contrib import admin
from .models import *

# 修改title和header
admin.site.site_title = 'MyDjango后台管理'
admin.site.site_header = 'MyDjango'

9.4 admin的二次开发

未完待续。。。
参考书籍《Django web应用开发实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值