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",]

 

posted @ 2018-08-27 14:43  叫你你敢答应么  阅读(163)  评论(0)    收藏  举报