本次章节开始y学习Admin后台系统和Auth认证系统(已经是django最后的内容了,没想到我都写完了一个系列了……)
Admin后台系统
admin后台系统即网站后台管理系统,主要用于对网站前台信息进行管理(简单来说就是对网站的数据库和文件进行快速操作和管理的系统)
走进Admin
1.admin配置
当一个网站上线后,网站管理员通过网站后台系统对网站进行管理与维护。django内置了强大的admin后台系统
(1)在setting.py中默认启用了Admin后台
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | INSTALLED_APPS = ['django.contrib.admin',
 
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'index',
 ]
 
 | 
当网站不需要Admin后台,可以删除配置信息,减少程序对系统资源的占用
(2)在根目录的urls.py中可以看到admin的URL地址信息
| 12
 3
 4
 
 | urlpatterns = [path('admin/', admin.site.urls),
 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)登录进去后,发现都是英文,如果有需要可以通过添加中间件来转换成中文
| 12
 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后台
| 12
 3
 4
 
 | from django.contrib import adminfrom . models import *
 
 admin.site.register(Product)
 
 | 
简单但不常用的方法,日常开发通常使用类的方法
(2)通过类的继承进行注册
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | from django.contrib import adminfrom . models import *
 
 
 @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文件编写
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | from django. apps import AppConfigimport os
 
 
 
 default_app_config = 'index.IndexConfig'
 
 
 def get_current_app_name(_file):
 return os.path.split(os.path.dirname(_file))[-1]
 
 
 class IndexConfig (AppConfig):
 name = get_current_app_name(__file__)
 verbose_name = '网站首页'
 
 | 
IndexConfig类中的verbose_name属性用于设置index的中文内容
(2)模型中文显示
在models.py中设置类Meta的类属性verbose_name_plural
| 12
 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 = '产品信息'
 verbose_name_plural = '产品信息'
 
 
 |