前言

之前我做了个Django的项目,为了让管理后台更加美观,我对Django(应该说是SimpleUI的)默认的Admin后台主页进行改造,具体可以看这篇文章:项目完成 - 基于Django3.x版本 - 开发部署小结

之前的两篇关于Django3.x开发部署小结的文章介绍的都是数据库、接口、性能方面的,看到有朋友留言对后台主页的改造表示有兴趣,所以就写一篇来介绍一下~

分析

改造基于我定制的 DjangoStarter 开发模板,本文代码会同步提交到Github,项目地址:https://github.com/Deali-Axy/DjangoStarter

DjangoStarter的Admin使用了SimpleUI,这是一个基于Vue、ElementUI的Admin主题,使用ElementUI的tab组件实现了多标签的功能,这个组件本身支持自定义主页,所以我的思路就是用Django的Template写个新的页面,配置好路由然后替换掉SimpleUI的默认主页。

默认主页长这样,有点单调

改造之后是这样

嘿,比原来好一些了,内容丰富了~

接下来我们一步步来实现这个主页的改造。

依赖

网上有很多后台模板,国产的有ElementUI、AntDesign这些,都挺好用的,但要好看得会CSS(很遗憾我不太会)

于是我把目光投向了国外的开源组件,其中AdminLTE就很不错哇,在我最熟悉的Bootstrap基础上进行扩展,好看又简单易上手~

那么就开始吧

这个页面用到的依赖如下

  • 目前AdminLTE版本是3.2,基于Bootstrap4.6
  • 图表使用chart.js,版本3.8
  • 图标使用fontawesome,使用免费的6.0版本

直接复制package.json的依赖部分:

  1. "dependencies": {
  2. "@fortawesome/fontawesome-free": "^6.0.0",
  3. "admin-lte": "3.2",
  4. "bootstrap": "^4.6.1",
  5. "chart.js": "^3.8.0",
  6. "jquery": "^3.6.0",
  7. }

直接复制保存,然后yarn命令安装依赖~

PS:推荐使用yarn管理npm包,当然也可以直接用npm

修改Gulp任务

关于在Django中使用和管理前端资源,具体可以参考这篇文章:Django项目引入NPM和gulp管理前端资源

  1. //使用 npm 下载的前端组件包
  2. const libs = [
  3. {name: "admin-lte", dist: "./node_modules/admin-lte/dist/**/*.*"},
  4. {name: "chart.js", dist: "./node_modules/chart.js/dist/**/*.*"},
  5. {name: "jquery", dist: "./node_modules/jquery/dist/**/*.*"},
  6. {name: "bootstrap", dist: "./node_modules/bootstrap/dist/**/*.*"},
  7. ];
  8. // 使用 npm 下载的前端组件,自定义存放位置
  9. const customLibs = [
  10. {name: 'font-awesome', dist: './node_modules/@fortawesome/fontawesome-free/**/*.*'},
  11. ]

保存之后在项目根目录下执行gulp move即可~

开始写页面

我们在templates/admin目录下新建extend_home.html

具体代码我就不贴了,已经上传到github上了,可以看这里:https://github.com/Deali-Axy/DjangoStarter/blob/master/templates/admin/extend_home.html

图表我用的假数据做的饼图,数据是这样的

  1. let exampleData = [
  2. {label: 'a', value: 10},
  3. {label: 'b', value: 10},
  4. {label: 'c', value: 10},
  5. {label: 'd', value: 10},
  6. {label: 'e', value: 10},
  7. {label: 'f', value: 10},
  8. ]

新闻和快捷操作的文字用了Django自带的随机文字生成标签

  1. {% lorem 6 w random %}

具体用法可以看官方文档:https://docs.djangoproject.com/zh-hans/4.0/ref/templates/builtins/#lorem

PS:这个页面里所有内容都是假数据,实际使用的时候可以通过context传入数据或者请求接口来填充真实数据~

写完网页模板之后保存

接下来配置一下路由就行

写一下View

我把这个页面放在DjangoStarter的默认App里

编辑apps/core/views.py文件

新增一个函数

  1. # 扩展admin主页,美化后台
  2. def extend_admin_home(request):
  3. return render(request, 'admin/extend_home.html')

配置路由

  1. urlpatterns = [
  2. # ...
  3. path('admin_home', views.extend_admin_home),
  4. ]

配置SimpleUI主页

编辑config/settings.py

在SimpleUI配置的区域里添加这行代码

  1. SIMPLEUI_HOME_PAGE = f'/{URL_PREFIX}core/admin_home'

PS:因为DjangoStarter加了个URL前缀功能,所以要把URL_PREFIX带上

搞定

这样就搞定了,具体代码比较长,可以看GitHub项目:https://github.com/Deali-Axy/DjangoStarter

不想跟着步骤一步步来的同学可以试试我的DjangoStarter模板哈,全都整合好了,开箱即用~

PS:下一篇文章介绍一下展示大屏的一些开发经验

告别单调,Django后台主页改造 - 使用AdminLTE组件的更多相关文章

  1. 使用前端后台管理模板库admin-lte(转)

    使用前端后台管理模板库admin-lte 使用前端后台管理模板库admin-lte 安装 搭建环境 安装 安装admin-lte,可以通过以下几种办法安装,下图是GitHub中admin-lte的主页 ...

  2. 前台主页搭建、后台主页轮播图接口设计、跨域问题详解、前后端互通、后端自定义配置、git软件的初步介绍

    今日内容概要 前台主页 后台主页轮播图接口 跨域问题详解 前后端打通 后端自定义配置 git介绍和安装 内容详细 1.前台主页 Homeviwe.vue <template> <di ...

  3. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  4. Django后台设置--遇到的问题与解决方案

    1. 后台如何管理项目中的models 新建的Django工程会自动引用admin 应用,新建后台可以通过 createsuperuser 命令建立后台admin超级管理员,我遇到的第一个问题,就是如 ...

  5. Django 后台支持中文方法

    今天遇到的一个问题,mark一下: django后台可以支持中文界面,一开始一直纠结于settings.py 中 LANGUAGE_CODE = 'en-us'中的'en-us'该更改成什么.zh-c ...

  6. 强大的Django后台管理

    Django 后台 django的后台我们只要加少些代码,就可以实现强大的功能.与后台相关文件:每个app中的 admin.py 文件与后台相关 下面示例是做一个后台添加博客文章的例子: 新建一个 名 ...

  7. django后台导入excel文件

    1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...

  8. django后台获取相同name名的数据

    django后台获取相同name名的post数据html: <form method="post"> <input type="text" n ...

  9. 1.1 、Django 后台

    Django 后台 与后台相关文件:每个app中的 admin.py 文件与后台相关. 一,新建一个 名称为 HelloDjango 的项目 django-admin.py startproject ...

随机推荐

  1. Jquery_效果-隐藏显示、淡入淡出、滑动面板、简单的动画队列

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  2. vulnhub DC:1渗透笔记

    DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...

  3. Git批量下载MODIS数据

    1.download.sh获取 EarthData(需注册账号)中获取MODIS的产品类型.地理范围.时间年份等,进入下载页面Download Status 下载点击得到_download.sh 文件 ...

  4. 抽象类 & 接口

    抽象类 模板设计模式 把每个类中类似的job 方法"提炼"出来, 成为一个抽象函数(同时也有一个抽象类) 然后把另外calcuateTime这个函数内容,"提炼" ...

  5. Jenkins Build step 'Execute shell' marked build as failure

    问题出现: Jenkins一直都构建成功,今天突然报错:Jenkins Build step 'Execute shell' marked build as failure 问题原因: By defa ...

  6. 网络协议OSI模型-TCP/IP-三次握手

    OSI模型 在制定计算机网络标准方面,起着重大作用的两大国际组织是:国际电信联盟电信标准化部门,与国际 标准组织(ISO),虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始 变 ...

  7. 完爆Docker!推荐你看下这个....

    现如今,互联网行业的每个人都知道数据的价值,很多人也为此学了一堆的数据分析工具,但面对问题,还是不知道如何去分析. 我们在奔向升职加薪的路上,总会遇到这些问题: 面对数据问题,没有思路,怎么办? 面对 ...

  8. SpringBoot整合MybatisPlus基本的增删改查,保姆级教程

    概述 MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法. 引入依赖 在项目中 ...

  9. Dapr 不是服务网格,只是我长的和他很像

    概述 我们快速看一遍官方文档:https://docs.dapr.io/concepts/service-mesh/#how-dapr-and-service-meshes-compare ,看看 D ...

  10. Linux下使用ssh测试端口是否开启

    当服务器上不允许使用telnet时,可以使用ssh测试远程服务器端口是否开启 具体命令如下 -v 显示连接debug信息 -p port 指定端口 ssh -v -p 80 root@192.168. ...