本次章节开始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', '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), 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 *
@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
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
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 = '产品信息' verbose_name_plural = '产品信息'
|