Django框架 Admin的使用
Django Admin 管理工具
Django 提供了基于 web 的管理工具
Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', ]
创建APP项目
python manage.py startapp app名称 # 然后在settings.py 中注册新建app INSTALLED_APPS = [ ... '新APP名称'
使用管理工具
启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到如下界面:

你可以通过命令 python manage.py createsuperuser 来创建超级用户,如下所示: # python manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: admin@runoob.com Password: Password (again): Superuser created successfully. [root@solar HelloWorld]#
之后输入用户名密码登录,界面如下:

管理工具配置
# 页面显示中文 # settings.py LANGUAGE_CODE = 'zh-hans'
# 在admin中注册表 # admin.py from django.contrib import admin from app01 import models # Register your models here. admin.site.register(models.Publisher) #models.py中创建的Publisher类 admin.site.register(models.Author) admin.site.register(models.Book)
创建表
class Publisher(models.Model): name = models.CharField(max_length=32,verbose_name="出版社名称") address = models.TextField(verbose_name="出版社地址") def __str__(self): return self.name class Meta: verbose_name = "出版社" verbose_name_plural = verbose_name class Author(models.Model): name = models.CharField(max_length=12,verbose_name="姓名") gender = models.SmallIntegerField( choices=((0,'女'),(1,"男"),(2,"保密")), default=2, verbose_name="性别", ) age = models.IntegerField(verbose_name="年龄") def __str__(self): return self.name class Meta: verbose_name = "作者" verbose_name_plural = verbose_name class Book(models.Model): title = models.CharField(max_length=32,verbose_name="书名") publish_date = models.DateField(auto_now_add=True,verbose_name="出版日期")
phone = models.CharField(max_length=11,null=True,blank=Ture) publisher = models.ForeignKey(to="Publisher",on_delete=models.CASCADE,verbose_name="出版社名称") authors = models.ManyToManyField(to="Author",verbose_name="作者") def __str__(self): return self.title class Meta: verbose_name = "书籍" verbose_name_plural = verbose_name
字段
#verbose_name 字段显示中文,给你的模型类起一个更可读的名字 #auto_now_add 默认为False,解释为:"创建时间"。设置为True时会在model对象第一次被创建时,将字段的值设置为创建时的时间 # auto_now 解释为:"最后一次修改时间",设置为True时每次修改model,都会自动更新时间
# blank = True
控制Django Admin 哪个字段可以为空,与null = True 一起使用
# 表名显示中文 class Meta: verbose_name = "出版社" verbose_name_plural = verbose_name
Django admin进阶
admin的定制
定制admin的操作,需要使用ModelAdmin
# 注册方式1 # 自定义一个权限的管理类 class PublisherAdmin(admin.ModelAdmin): # 告诉Django admin 在页面上展示我这张表显示哪些字段 list_display = ["title","url"] # 列表页面支持直接修改的字段 list_editable = ["url",] # 注册后面加上上面的PublisherAdmin admin.site.register(models.Permission,PermissionAdmin)
ModelAdmin支持的定制项
list_display,列表时,定制显示的列
class UserAdmin(admin.ModelAdmin): list_display = ('user', 'pwd', 'xxxxx') def xxxxx(self, obj): return "xxxxx"
list_display_links,列表时,定制列可以点击跳转
class UserAdmin(admin.ModelAdmin): list_display = ('user', 'pwd', 'xxxxx') list_display_links = ('pwd',)
list_filter,列表时,定制右侧快速筛选
list_select_related,列表时,连表查询是否自动select_related
list_editable,列表时,可以编辑的列
class UserAdmin(admin.ModelAdmin): list_display = ('user', 'pwd','ug',) list_editable = ('ug',)
search_fields,列表时,模糊搜索的功能
search_fields = ["url",]

浙公网安备 33010602011771号