Django Admin

Django Admin 使用

admin app

Django 提供了基于 Web 的管理工具, 

Django 自动管理工具 django.contrib 的一部分, 可以在项目的 settings.py 中的 INSTALLED_APPS 看到.

django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

INSTALLED_APPS = [
    'simpleui',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'user.apps.UserConfig',
]

启动 admin 管理工具

要启动admin管理工具,只需要在urls.py中启用admin对应的路由配置项即可。

通常我们在使用PyCharm生成项目时会在 urls.py 中自动设置好。

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),

]

使用 admin 管理工具

首先先启动我们的Django项目,然后在浏览器中访问 http://127.0.0.1:8000/admin/,就能看到登陆界面。(具体网址和端口根据自己环境输入)

使用  python manage.py createsuperuser  来创建管理员账号,来登录admin管理后台。

想要在admin 界面管理某个数据模型(model),我们需要先将该数据模型(model)注册到 admin。

admin.site.register(models.Publisher)
admin.site.register(models.Book)
admin.site.register(models.Author)

在admin.py中只要按照上面的方式将某个模型类(model class)注册,即可在Admin中实现该model对应的数据表增删改查的功能。

admin 的定制

利用  ModelAdmin  进行在项目的 admin.py 中进行定制化.

# 注册方式1
from django.contrib import admin
from .models import Authors,Book
class AuthorsAdmin(admin.ModelAdmin):

    list_display = [
        'name',
        'age',
        'sex',
        'autordeai',
        'create_time',
        'update_time',
    ]


admin.site.register(Authors, AuthorsAdmin)

# 注册方式2
@admin.register(book)
class BookAdmin(admin.ModelAdmin):
    list_display = ("title", "price", "publish_date", "publisher")

ModelAdmin支持的定制项

list_display

定义 admin 中要显示的字段
class AuthorsAdmin(admin.ModelAdmin):
    list_display = [
        'name',
        'age',
        'sex',
        'autordeai',
        'create_time',
        'update_time',
    ]

search_fields

class AuthorsAdmin(admin.ModelAdmin):
    list_display = [
        'name',
        'age',
        'sex',
        'autordeai',
        'create_time',
        'update_time',
    ]
# 定义要模糊搜索的字段
    search_fields = ('name', 'sex')

list_per_pag

# 分页
    list_per_page = 5

filter_horizontal

详细页面时,M2M显示时,数据移动选择(方向:上下和左右)

class BooksAdmin(admin.ModelAdmin):
    list_display = [
        'title',
        'price',
        'good',
        'desc_short',
        'publisher_state',
        'desc_authors',
        'publisher',
        'create_time',
        'update_time',
    ]

    search_fields = ('title', )
    list_per_page = 5
    filter_horizontal = ('authors',)

admin.site.site_header

定义 admin 后台 header

admin.site.site_title

定义admin后台 title

自定义函数显示

class BooksAdmin(admin.ModelAdmin):
    list_display = [
        'title',
        'price',
        'good',
        'desc_short',
        'publisher_state',
        'desc_authors',
        'publisher',
        'create_time',
        'update_time',
    ]

    search_fields = ('title', )
    list_per_page = 5
    filter_horizontal = ('authors',)

    def desc_authors(self, obj):
        return ','.join([ x.name for x in obj.authors.all() ])

    def desc_short(self, obj):
        MAX_LEGNTH = 15
        if len(obj.abstract) > MAX_LEGNTH:
            return f'{obj.abstract[:MAX_LEGNTH]} ...'
        return obj.abstract

    desc_authors.short_description = '作者'
    desc_short.short_description = '简介'

  

 

posted @ 2020-07-17 21:20  闫世成  阅读(69)  评论(0)    收藏  举报