admin定制后台管理系统

Django自带有一个功能强大的后台管理系统,通过使用一些admin自带的参数,可以定制出一套非常肺腑丰富的后台管理系统。

在浏览器后加上admin时,会弹出需要填写账户名密码的界面,我们需要先创建一个管理员账号,输入以下命令:

python manage.py createsuperuser

就会让你依次输入用户名邮箱和密码,注册完成之后,就可以进入浏览器然后输入注册的账号和密码,就可以进入后台的管理系统了


admin的注册

首先,如果要在Django的后台显示应用的模型,必须在应用所在的admin.py文件中注册模型,以下是Django官方文档给的一个最基本的后台管理的注册方式

from django.contrib import admin
from .model import Author

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author,AuthorAdmin)

这个过程分为以下3步:

  1. 导入 admin 及需要注册的模型(这里是 Author)
  2. 创建一个模型的管理类,继承 admin.ModelAdmin,这个类的参数后面详细介绍
  3. 注册模型的管理类

使用装饰器来注册

其实上面的过程可以把第2、3步结合起来,在创建模型的管理类的同时注册类,这就需要使用 admin 的装饰器,上面的例子改用装饰器之后的代码如下:

from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass

使用装饰器可以让代码变得更加简洁.

admin 的定制

class BookAdmin(admin.ModelAdmin):
    list_display=('id','name','price','pub_date') #定制显示的列
    
    list_editable=('name','price') #让指定的属性在页面可直接修改
    
    filter_horizontal=('author',)  # 给多选增加一个左右添加的框
    
    list_per_page=3 #控制每页显示的对象数量
    
    search_fields=('id','name','publish__name') #显示一个搜索框,可查询指定属性的内容
    
    list_filter=('pub_date','publish')  #激活过滤器
    
    ordering=('price',)  #对指定属性进行排序,默认升序,若要降序改为'-price'

    #然后作为参数注册到admin上
    admin.site.register(models.Book,BookAdmin)
posted @ 2019-04-07 12:56  Dandelion-L  阅读(654)  评论(0)    收藏  举报