使用Django的管理模块,需要按照如下步骤操作:

  1. 管理界面本地化
  2. 创建管理员
  3. 注册模型类
  4. 自定义管理页面

1 管理界面本地化

在settings.py中设置语言和时区

LANGUAGE_CODE = 'zh-hans' # 使用中国语言
TIME_ZONE = 'Asia/Shanghai' # 使用中国上海时间

2 创建超级管理员

创建管理员的命令如下,按提示输入用户名、邮箱、密码。

python manage.py createsuperuser

打开浏览器,在地址栏中输入如下地址后回车。

http://127.0.0.1:8000/admin/

输入前面创建的用户名、密码完成登录。

登录成功后界面如下,但是并没有我们自己应用模型的入口,接下来进行第三步操作。

如果想要修改密码可以执行

python manage.py changepassword 用户名

3 App应用配置

在每个应用目录中都包含了apps.py文件,用于保存该应用的相关信息。

在创建应用时,Django会向apps.py文件中写入一个该应用的配置类,如

from django.apps import AppConfig

class BooktestConfig(AppConfig):
name = 'booktest'

我们将此类添加到工程settings.py中的INSTALLED_APPS列表中,表明注册安装具备此配置属性的应用。

  • AppConfig.name 属性表示这个配置类是加载到哪个应用的,每个配置类必须包含此属性,默认自动生成。

  • AppConfig.verbose_name 属性用于设置该应用的直观可读的名字,此名字在Django提供的Admin管理站点中会显示,如

    from django.apps import AppConfig
    
    class BooktestConfig(AppConfig):
    name = 'booktest'
    verbose_name = '图书管理'

4 注册模型类

登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。

打开booktest/admin.py文件,编写如下代码:

from django.contrib import admin
from booktest.models import BookInfo,HeroInfo admin.site.register(BookInfo)
admin.site.register(HeroInfo)

到浏览器中刷新页面,可以看到模型类BookInfo和HeroInfo的管理了。

点击类名称"BookInfo"(图书)可以进入列表页,默认只有一列。

在列表页中点击"增加"可以进入增加页,Django会根据模型类的不同,生成不同的表单控件,按提示填写表单内容后点击"保存",完成数据创建,创建成功后返回列表页。

在列表页中点击某行的第一列可以进入修改页。

按照提示进行内容的修改,修改成功后进入列表页。在修改页点击“删除”可以删除一项。

删除:在列表页勾选想要删除的复选框,可以删除多项。

点击执行后进入确认页面,删除后回来列表页面。

5 定义与使用Admin管理类

Django提供的Admin站点的展示效果可以通过自定义ModelAdmin类来进行控制。

定义管理类需要继承自admin.ModelAdmin类,如下

from django.contrib import admin

class BookInfoAdmin(admin.ModelAdmin):
pass

使用管理类有两种方式:

  • 注册参数

    admin.site.register(BookInfo,BookInfoAdmin)
  • 装饰器

    @admin.register(BookInfo)
    class BookInfoAdmin(admin.ModelAdmin):
    pass

    调整列表页展示

    1 页大小

    每页中显示多少条数据,默认为每页显示100条数据,属性如下:

    list_per_page=100

    1)打开booktest/admin.py文件,修改AreaAdmin类如下:

    class BookInfoAdmin(admin.ModelAdmin):
    list_per_page = 2

    2 "操作选项"的位置

    顶部显示的属性,设置为True在顶部显示,设置为False不在顶部显示,默认为True。

    actions_on_top=True

    底部显示的属性,设置为True在底部显示,设置为False不在底部显示,默认为False。

    actions_on_bottom=False

    1)打开booktest/admin.py文件,修改BookInfoAdmin类如下:

    class BookInfoAdmin(admin.ModelAdmin):
    ...
    actions_on_top = True
    actions_on_bottom = True

    3 列表中的列

    属性如下:

    list_display=[模型字段1,模型字段2,...]

    1)打开booktest/admin.py文件,修改BookInfoAdmin类如下:

    class BookInfoAdmin(admin.ModelAdmin):
    ...
    list_display = ['id','btitle']

    点击列头可以进行升序或降序排列。

    4 将方法作为列

    列可以是模型字段,还可以是模型方法,要求方法有返回值。

    通过设置short_description属性,可以设置在admin站点中显示的列名。

    1)打开booktest/models.py文件,修改BookInfo类如下:

    class BookInfo(models.Model):
    ...
    def pub_date(self):
    return self.bpub_date.strftime('%Y年%m月%d日') pub_date.short_description = '发布日期' # 设置方法字段在admin中显示的标题

    2)打开booktest/admin.py文件,修改BookInfoAdmin类如下:

    class BookInfoAdmin(admin.ModelAdmin):
    ...
    list_display = ['id','atitle','pub_date']

    方法列是不能排序的,如果需要排序需要为方法指定排序依据。

    admin_order_field=模型类字段

    1)打开booktest/models.py文件,修改BookInfo类如下:

    class BookInfo(models.Model):
    ...
    def pub_date(self):
    return self.bpub_date.strftime('%Y年%m月%d日') pub_date.short_description = '发布日期'
    pub_date.admin_order_field = 'bpub_date'

    5 关联对象

    无法直接访问关联对象的属性或方法,可以在模型类中封装方法,访问关联对象的成员。

    1)打开booktest/models.py文件,修改HeroInfo类如下:

    class HeroInfo(models.Model):
    ...
    def read(self):
    return self.hbook.bread read.short_description = '图书阅读量'

    2)打开booktest/admin.py文件,修改HeroInfoAdmin类如下:

    class HeroInfoAdmin(admin.ModelAdmin):
    ...
    list_display = ['id', 'hname', 'hbook', 'read']

    6 右侧栏过滤器

    属性如下,只能接收字段,会将对应字段的值列出来,用于快速过滤。一般用于有重复值的字段。

    list_filter=[]

    1)打开booktest/admin.py文件,修改HeroInfoAdmin类如下:

    class HeroInfoAdmin(admin.ModelAdmin):
    ...
    list_filter = ['hbook', 'hgender']

    7 搜索框

    属性如下,用于对指定字段的值进行搜索,支持模糊查询。列表类型,表示在这些字段上进行搜索。

    search_fields=[]

    1)打开booktest/admin.py文件,修改HeroInfoAdmin类如下:

    class HeroInfoAdmin(admin.ModelAdmin):
    ...
    search_fields = ['hname']
  • 调整站点信息

    Admin站点的名称信息也是可以自定义的。

    • admin.site.site_header 设置网站页头
    • admin.site.site_title 设置页面标题
    • admin.site.index_title 设置首页标语

    在booktest/admin.py文件中添加一下信息

    from django.contrib import admin
    
    admin.site.site_header = '书城'
    admin.site.site_title = '书城MIS'
    admin.site.index_title = '欢迎使用书城MIS'

最新文章

  1. SQLServer数据库中创建临时表
  2. 剑指Offer 从上往下打印二叉树(dfs)
  3. 子类重载父类的方法“parent::方法名”转于 恩聪PHP学习教程
  4. CSS小三角制作
  5. android wifi驱动移植详细过程
  6. concurrency parallel 并发 并行
  7. Entity Framework 6新特性:全局性地自定义Code First约定
  8. Unity3d 一些 常见路径
  9. python 字符串换行的三种方式
  10. win7 安装SQL Server 2005 开发版 图文教程
  11. 如果在VMware上免费下载驱动
  12. Android Studio 不得不知的20大快捷键
  13. 学习pthreads,给线程传递多个参数
  14. RabbitMQ 学习日记
  15. 单片机stm32小白入门级学习路线“图”
  16. 【bzoj3717】[PA2014]Pakowanie 状压dp
  17. 使用viewport中的vm来适配移动端页面
  18. Linux Shell 笔记
  19. php自动填充
  20. Redis进阶实践之七Redis和Lua初步整合使用(转载 7)

热门文章

  1. nodejs实现聊天机器人
  2. java动态代理之CGLIB实现
  3. IntelliJ IDEA 安装,配置,汉化
  4. 游戏设计模式——Unity对象池
  5. EF指定更新字段
  6. Android手机QQ文件夹解析
  7. [Leetcode] 第290题 单词模式
  8. Channel使用技巧
  9. Widget 中的 State 解析
  10. Windows认证 | Windows本地认证