不忘初心,
牢记使命。

Django搭建个人博客平台4---后台admin优化、simpleui和导入导出

2021-06-15 大聪明 0评论 201 2喜欢

Django搭建个人博客平台4---后台admin优化、simpleui和导入导出

Admin优化

像展示和搜索按钮直接在ModelAdmin中修改即可。

展示字段设置

我要对UserInfo表多展示几个字段,不是只展示用户名。

首先,自定义一个管理类,继承admin.ModelAdmin,然后更改它的list_display即可。最后不要忘记注册时添加你的管理类。

from django.contrib import admin


class UserManager(admin.ModelAdmin):
    list_display = ['username', 'email', 'is_active', 'last_login']


admin.site.register(models.UserInfo, UserManager)

添加过滤器

使用admin注册装饰器实现,展示字段当是外键时,我们用函数处理

def category(obj):
    return obj.category.name


@admin.register(models.Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', category, 'update_time']  # 可以是一个函数
    list_filter = ['title']  # 过滤器
    form = ArticleForm

添加点击链接

class LinkManager(admin.ModelAdmin):
    list_display = ['title', 'desc']
    list_display_links = ['title', 'desc']   # 给那个字段加url


admin.site.register(models.Links, LinkManager)

可编辑字段

注意:不能给links中的字段添加editable

class LinkManager(admin.ModelAdmin):
    list_display = ['title', 'desc', 'is_disply']
    list_editable = ['is_disply']  # 可编辑的字段
    list_display_links = ['title', 'desc']   # 给那个字段加url

simpleui

基本使用

它的admin太丑了,不好看怎么办。用一个插件可以快速优化。

  1. 安装simpleui

    pip install django-simpleui==2021.4.3
    
  2. app中注册

    一定要写在第一个,之后自己创建的应用也要在这里注册。

    # settings.py
    
    INSTALLED_APPS = [
        'simpleui',  # 一定要写在第一个
        'import_export',
        'smart_chart.echart',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.contrib.sites',
        'django.contrib.sitemaps',
        'blog',
        'mdeditor',
    ]
    

这样就完成了,去后台查看已经变样了,更加的美观。

进阶

重写simple-ui的模板html文件

我想去掉右边的simple-ui的版本和链接展示那块,需要重写它的home页面

首先,比对simple-ui的目录结构,我也在我的项目下的template文件夹下建立相同的目录结构

也就是在我的项目下的templates文件夹下建立一个admin文件夹,然后像重写哪个html,就建立一个同名html文件即可。

我看到主页就是home.html,里边预留的钩子不多,所以直接把他全部复制过来,删掉不想要的即可。

image-20210517135519722

另一种方法就是直接在配置文件中修改:

# simpleui配置
SIMPLEUI_HOME_INFO = False

simpleui都可通过配置项修改,前边的重写是一种思想,包括重写django-admin自带的一些模板文件也是同样的操作步骤。

左侧边栏自定义添加项

查看官方文档

SIMPLEUI_CONFIG = {
    'system_keep': True,
    # 'menu_display': ['Simpleui', '测试', '权限认证', '动态菜单测试'],      # 开启排序和过滤功能, 不填此字段为默认排序和全部显示, 空列表[] 为全部不显示.
    'dynamic': True,  # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时动态展示菜单内容
    'menus': [
        {
            'name': '可视化',
            'icon': 'fa-fw fa fa-leaf',
            'models': [{
                'name': '文章报表',
                'icon': 'far fa-surprise',
                'url': 'https://www.baidu.com'
            }]
        },
    ]
}

image-20210517142833166

其他小配置

# simpleui配置
SIMPLEUI_HOME_INFO = False  # 去掉简介栏
SIMPLEUI_LOGO = 'https://www.liboer.top/static/image/favicon.ico'  # logo

更多可以去官网查看

导入导出插件

安装

pip3 install django-import-export

使用

去app中注册

INSTALLED_APPS = [
    'simpleui',
    'import_export',
]

配置IMPORT_EXPORT_USE_TRANSACTIONS,默认值为False。它确定库是否会在数据导入中使用数据库事务,以确保安全。

# 导入导出
IMPORT_EXPORT_USE_TRANSACTIONS = True

在admin.py文件中给想要添加导入导出的表的管理类继承ImportExportModelAdmin即可,这个插件实际上也是对django的ModelAdmin进行一个重写并扩展功能。

@admin.register(models.Article)
class ArticleAdmin(ImportExportModelAdmin):
    list_display = ['title', category, 'update_time', 'is_display']
    list_editable = ['is_display']
    list_filter = ['title']
    form = ArticleForm

image-20210517144405672

后话

我的博客目前正常运行,这是我自己建立博客网站的记录和总结。如果你按照我的教程去做,一般是不会出现问题 ,但是,总会有bug发生。如果你遇到了问题,欢迎与我交流沟通。

最后,如果你觉得这篇文章对你有用的话,欢迎一键三连酌情打赏,谢谢!

发表评论 取消回复

电子邮件地址不会被公开。

请输入正确格式的qq邮箱
请输入以http或https开头的URL,格式如:https://libo_sober.top