0%

Python|django框架入门4

本次章节开始y学习Admin后台系统和Auth认证系统(已经是django最后的内容了,没想到我都写完了一个系列了……)

Admin后台系统

admin后台系统即网站后台管理系统,主要用于对网站前台信息进行管理(简单来说就是对网站的数据库和文件进行快速操作和管理的系统)

走进Admin

1.admin配置

当一个网站上线后,网站管理员通过网站后台系统对网站进行管理与维护。django内置了强大的admin后台系统

(1)在setting.py中默认启用了Admin后台

1
2
3
4
5
6
7
8
9
10
INSTALLED_APPS = [
'django.contrib.admin',
#admin的配置
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index',
]

当网站不需要Admin后台,可以删除配置信息,减少程序对系统资源的占用

(2)在根目录的urls.py中可以看到admin的URL地址信息

1
2
3
4
urlpatterns = [
path('admin/', admin.site.urls), #admin站点管理地址
path('',include('index.urls')), #首页地址
]

通过http://127.0.0.1:8000/admin/进入后台

2.创建用户

要访问admin后台系统,首先需要用户账号和密码,在确保模型在数据库中有相应的数据表后:

(1)使用django的管理工具manage.py,输入命令行

1
python manage.py create superuser

用户名和邮箱地址可以为空,接下来就可以进入admin后台系统了

(2)登录进去后,发现都是英文,如果有需要可以通过添加中间件来转换成中文

1
2
3
4
5
6
7
8
9
10
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', #在此处添加,注意顺序
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3.admin功能
功能 介绍
站点管理 网站的App管理界面,主要管理Django的App下所定义的模型
认证和授权 内置的认证系统,也是项目的一一个App
用户和组 认证和授权所定义的模型,auth_ user和auth_user_groups
4.模型展示

若想将index定义的模型展示到后台中,可以有以下两种方法,在app的admin.py中编写

(1)直接把模型注册到admin后台

1
2
3
4
from django.contrib import admin
from . models import *

admin.site.register(Product)

简单但不常用的方法,日常开发通常使用类的方法

(2)通过类的继承进行注册

1
2
3
4
5
6
7
8
9
10
11
12
from django.contrib import admin
from . models import *

#注册方法一,使用Python装饰器将ProductAdmin和模型Product绑定并注册到后台
@admin.register (Product)
class ProductAdmin (admin.ModelAdmin) :
# 设置显示的字段
list_display = ['id', 'name', 'weight', 'size', 'type', ]


#注册方法二
admin.site.register (Product,ProductAdmin)

原理:

  • 自定义ProductAdmin类,使其继承ModelAdmin,ModelAdmin 主要设置模型。
  • 将ProductAdmin类注册到Admin后台系统中有两种方法,两者都是将模型Product和ProductAdmin类绑定并注册到Admin后台系统。

admin的基本设置

1.中文显示

index和products的中文显示需要不同方法

(1)实现index中文显示,在init.py文件编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 = '网站首页'

IndexConfig类中的verbose_name属性用于设置index的中文内容

(2)模型中文显示

在models.py中设置类Meta的类属性verbose_name_plural

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Product(models.Model):
id = models.AutoField('序号',primary_key=True)
name = models.CharField('名称',max_length=50)
weight = models.CharField('重量', max_length=20)
size = models.CharField('尺寸', max_length=20)
type = models.ForeignKey(Type, on_delete=models.CASCADE,verbose_name='产品类型')

# 设置返回值
def __str__ (self) :
return self.name
class Meta:
# 如只设置verbose_name, 在Admin会显示为"产品信息s"
verbose_name = '产品信息'
verbose_name_plural = '产品信息'