admin
admin
是 Django
自带的后台管理组件,你可以在 admin 中执行增删改查等操作。
它以可视化的方式让你来操纵模型表,十分的便捷。
基本使用
数据准备
如下,在 app01
中有一个这样的模型表:
from django.db import models # Create your models here. class User(models.Model): user_id = models.AutoField(primary_key=True, verbose_name="用户编号") user_name = models.CharField(max_length=32, verbose_name="用户名") user_gender = models.BooleanField( choices=([0, "male"], [1, "female"]), verbose_name="用户性别") user_introduction = models.TextField( max_length=1024, null=True, blank=True, verbose_name="用户简介") def __str__(self): return self.user_name
创建用户
当运行了数据库迁徙命令后,需要创建一个可登录 admin
进行管理的超级账户。
python manage.py createsuperuser
它会提示你输入用户名,以及密码,密码不能少于八位。
可以选填邮箱。
注册admin
管理员用户创建完成后,在 app01
应用下进行注册。
from django.contrib import admin from .models import * admin.site.register(User)
接下来打开 admin
,输入账户名与密码后,就可以看到这张表。
接下来就可以对该表进行增删改查了。
深度配置
models参数
在创建模型表时,可以对字段添加一些与 admin
相关的参数。
参数
描述
verbose_name
Admin中显示的字段名称
blank
Admin中进行添加或编辑时,该字段是否可以为空
editable
Admin中是否可编辑该字段
help_text
Admin中的帮助信息
choices
Admin中选择框显示的内容
在这里的 blank
与 verbose_name
以及 choices
都比较常用。
除了在模型表的字段上进行配置外,也可以在该表下定制元信息。这其中有关于该表在 Admin
中的信息显示,如下所示:
class User(models.Model): 字段 = 类型(条件) 字段 = 类型(条件) class Meta: verbose_name = "Admin中显示的表名"
admin配置
如果要对一个注册的表进行深度配置,可在 admin.py
中对它进行。
常用的配置方式有两种,如下所示:
from django.contrib import admin # 装饰器注册 @admin.register(User) class UserConfig(admin.ModelAdmin): 配置项.... # 使用site class UserConfig(admin.ModelAdmin): 配置项.... admin.site.register(CustomAdmin, UserConfig) # 应用配置项
下面是 admin 深度配置的一些常用选项。
from django.contrib import admin from .models import * # Register your models here. class UserConfig(admin.ModelAdmin): # 自定义字段,作用显示 def edit(self): return "编辑" # 以下是自定义admin的使用 # 添加数据模板页 # add_form_template = None # 修改数据的模板页 # change_form_template = None # 修改多条数据的模板页 # change_list_template = None # 删除确认信息模板页 # delete_confirmation_template = None # 删除关联数据的确认页 # delete_selected_confirmation_template = None # 修改历史的模板页 # object_history_template = None # 弹出框模板页 # popup_response_template = None # 不支持多对多字段,展示表中的字段。 list_display = ["user_id", "user_name","user_gender",edit] # 点击字段可进入change页面 list_display_links = [edit] # 过滤筛选,支持各种关系 list_filter = ["user_gender"] # 支持在页面修改的字段,与list_display_links有冲突 list_editable = ["user_name"] # 模糊搜索,可以按照编号、名字搜索.或关系 search_fields = ["user_id","user_name"] # 用于和action定制项做批处理 def patch_init(self,request,queryset): """ queryset:选中的字典 """ # 选中的用户全改为男性... queryset.update(user_gender=False) # 添加描述 patch_init.short_description = "批量修改性别" actions = [patch_init] admin.site.register(User)
以下是配置完成后的样式,自行对应配置项进行配置后查看即可。
中文显示
如果想要在 admin
中进行中文显示,则可以在全局的 settings.py
中配置语言。
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-Hans' # 中文显示
执行流程
在启动 django
项目时,第一步会去 settings
中导入各种模块。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', ]
查看 admin
源码 from django.contrib import admin
,它下面有这样的一个函数,该函数的作用就是将所有 app
下的 admin
都会做一次导入。
def autodiscover(): autodiscover_modules('admin', register_to=site)
我们知道,在模块导入时,会运行该模块中的代码,那么在 admin.site
进行注册时,实际上是应用单例模式进行注册。
使用 admin.site.register()
实际上都是在使用单例对象下的方法,并不会重复生成多个对象。
class AdminSite(object): def __init__(self): self._registry = {} def register(self, model, admin_class = None): # 设置配置类 if not admin_class: admin_class = ModelAdmin self._registry[model] = admin_class(model, self) site = AdminSite() # 最后一行
admin
中单例对象的应用也非常简单,它是以模块的方式应用单例对象,因为我们知道模块只会执行一次。
如下所示:
# f1.py 模块 class Test(object): def __init__(self,name): self.name = name t1 = Test("测试")
当其他文件进行多次导入时,只会导入一次,此时使用的 t1 永远都是单例对象,不会重复实例化:
import f1 f1.t1()
以上就是Django admin组件的使用的详细内容,更多关于Django admin组件的资料请关注其它相关文章!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]