Django SimpleUI与vue的完美结合

这篇具有很好参考价值的文章主要介绍了Django SimpleUI与vue的完美结合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

django 与django simple ui的黄金组合,可以在短时间内快速开发出一套完整的admin后台管理页。但是现在越来越多的项目都开始使用前后端分离开发,如何将vue项目与django admin完美结合,根据需求实现首页以及其他页面的自定义开发?本文带你一探究竟。

一、Django admin

Django作为python web库的一哥,他能经久不衰的一个主要原因就是自带的admin管理后台,仅仅需要几行代码就可以做一个功能齐全的管理后台。
使用Django Admin可以快速对数据库的各个数据表进行增删查改。一行代码即可增加对一个模型(数据表)的增删查改。试想如果你要自己手动编写后台对一个模型进行增删查改,你一般需要4个urls, 4个视图函数或通用视图和4个模板。当一个项目比较大包含多个app时,而每个app又包含多个模型(数据表)时, 那么编写和维护整个项目管理后台的工作量可想而知。Django Admin所做就是将所有需要管理的模型(数据表)集中在一个平台,你不仅可以选择性地管理模型(数据表), 你还可以快速订制数据条目查询,过滤和搜索条件。
关于django admin配置和使用在这里就不做具体描述,推荐大家参阅大江狗的文章https://zhuanlan.zhihu.com/p/47962034

二、Django SimpleUI

1. 简介

虽然django admin实现了管理后台的功能,但是色彩搭配,样式设计只能用简陋来形容。推荐使用Django SimpleUI,他具有一套美观的ui界面,更符合国人审美和使用习惯的。
官方文档地址:https://simpleui.72wo.com/docs/simpleui/

2. 安装

  • pip安装

pip install django-simpleui

  • settings.py加入INSTALLED_APPS
INSTALLED_APPS = [
      'simpleui', # 一定要添加到第一条
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      ...     
]
  • 测试是否安装成功

使用python manage.py runserver命令启动本地测试服务器, 访问/admin/, 如果你能看到如下页面说明安装成功。
https://img-blog.csdnimg.cn/img_convert/35d4834c23bb8da6edf70f40fd68f906.png#clientId=u3327080b-bc02-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u510ca043&margin=[object Object]&name=image.png&originHeight=1241&originWidth=1572&originalType=url&ratio=1&rotation=0&showTitle=false&size=287239&status=done&style=none&taskId=u8c28142b-96e9-4157-9233-e24ae9b5bb7&title=

3. 常用配置(在settings.py添加配置即可)

  • 更改默认语言为中文
LANGUAGE_CODE = 'zh-hans'
  • 自定义logo链接
SIMPLEUI_LOGO = 'https://oss.cuiliangblog.cn/image/logo.png'
  • 修改管理后台的名称和标题

不能在settings.py里进行配置。在任何一个app的目录下新建一个admin.py, 添加如下代码即可修改。

from django.contrib import admin

admin.site.site_header = '崔亮的博客管理'  # 设置header
admin.site.site_title = '博客后台管理'  # 设置title

修改完成效果如下所示
在这里插入图片描述

  • 关闭首页右侧版本信息和使用分析
# 隐藏右侧SimpleUI广告链接和使用分析
SIMPLEUI_HOME_INFO = False 
SIMPLEUI_ANALYSIS = False
  • 修改APP和模型名称为中文,添加verbose_name即可
# app名称修改(blog/app.py)
from django.apps import AppConfig


class BlogConfig(AppConfig):
    name = 'blog'
    verbose_name = '内容管理'
# 模型名称修改(blog/models.py)
class Article(models.Model):
    ……

    class Meta:
        verbose_name = '文章内容'
        verbose_name_plural = verbose_name

三、自定义首页

SimpleUI默认首页由快捷链接和最近动作组成,我们可以在settings.py中通过配置将其隐藏,并指定URL地址。接下来的操作以vue项目打包后导入django项目为了,演示如何配置使用。

1. vue前端配置

vue前端的内容主要是创建一个哈希模式的路由,并开发相关的页面,最后打包即可。提供一个本人项目使用的vue项目初始化模板,https://gitee.com/cuiliang0302/vue3_vite_element

  • 创建路由(src/router/index.js),(我这里使用的是hash模式,因History模式测试发现django无法解析。如果有人知道解决办法欢迎指出,谢谢!)
import {createRouter, createWebHashHistory} from 'vue-router';

const router = createRouter({
	history: createWebHashHistory(),  // hash模式,
	routes: [
		{
			path: '/',
			redirect: '/index'
		},
		{
			path: '/index',
			name: 'Index',
			component: () => import('@/views/Index.vue')
		}
	]
})
export default router;
  • 创建vue页面(src/views/Index.vue)
<template>
  <h1>这是vue首页</h1>
</template>
<script setup>

</script>

<style scoped lang="scss">

</style>
  • 修改vite配置,添加项目打包路径前缀/static/dist(vite.config.js)。配置为/static/dist/的原因是打包后要将文件拷贝到/static/dist/路径下,如果使用默认的/路径,会导致静态资源从http://127.0.0.1:8000/下查找,导致404错误。
// @ts-ignore
import {resolve} from "path";
import {defineConfig} from "vite";
import vue from "@vitejs/plugin-vue";

import Components from "unplugin-vue-components/vite";
import {ElementPlusResolver} from "unplugin-vue-components/resolvers";

// https://vitejs.dev/config/
export default defineConfig({
	resolve: {
		alias: {
			"@": resolve(__dirname, "src")
		}
	},
	plugins: [
		vue(),
		Components({
			resolvers: [
				ElementPlusResolver({
					importStyle: "sass",
				}),
			],
		}),
	],
	base:'/static/dist/',
});
  • 打包前端项目

npm run build

至此,前端操作完成,此时在项目根目录下会生成dist目录,里面是打包后的前端页面

在这里插入图片描述

2. django 后端

后端的内容主要是修改django simple ui,使用自定义首页,然后修改settings的static静态资源配置,然后添加一条url路由并创建相关view视图即可。

  • 修改django simple ui,使用自定义首页(settings.py)。其中admin的首页以及图标可以在http://www.fontawesome.com.cn/faicons/中查找。
# 隐藏首页的快捷操作和最近动作
SIMPLEUI_HOME_QUICK = False
SIMPLEUI_HOME_ACTION = False

# 自定义admin首页
SIMPLEUI_HOME_PAGE = '/defined/#index/'
SIMPLEUI_HOME_TITLE = '系统主页'
SIMPLEUI_HOME_ICON = 'fa fa-home'
  • 重写设置我们的 django 静态路径,将我们的静态文件指向我们 static 文件夹下面的 dist 文件夹(settings.py)
# 使用vue资源文件
TEMPLATES[0]['DIRS'] += (
    os.path.join(BASE_DIR, 'static', 'dist'),
)
  • 添加url路由(myblog_api/urls.py)。注意将url添加到项目根路由下。
from django.contrib import admin
from django.urls import path, re_path, include
from public import views, crontab

urlpatterns = [
    path('admin/', admin.site.urls),
    # admin管理页
    path('defined/', views.Defined, name='defined'),
    # 自定义admin页面
]

  • 创建view视图处理函数(public/views.py)
from django.shortcuts import render

def Defined(request):
    """
    admin自定义页面
    """
    return render(request, 'index.html')
  • 将前端打包后的dist拷贝到django项目static目录下

在这里插入图片描述

至此,django 后端配置完成,打开admin访问测试。如果控制台提示跨域错误记得配置django允许跨域

在这里插入图片描述

四、添加其他页面

django admin虽然已经将传统admin后台模型的增删改查功能全部实现了,但是有些操作还是需要添加自定义页面才能符合业务开发需求。而且django simple ui默认会显示所有模型,也需要根据需求进行隐藏操作。

1. vue前端

接下来以添加一个目录编排页为例,演示vue如何添加页面。与前面添加首页一样的步骤,创建路由和vue页面即可。

  • 创建路由(src/router/index.js)
import {createRouter, createWebHashHistory} from 'vue-router';

const router = createRouter({
	history: createWebHashHistory(),  // hash模式,
	routes: [
		{
			path: '/',
			redirect: '/index'
		},
		{
			path: '/index',
			name: 'Index',
			component: () => import('@/views/Index.vue')
		},
		{
			path: '/directory',
			name: 'Directory',
			component: () => import('@/views/Directory.vue')
		}
	]
})
export default router;

  • 创建vue页面(src/views/Index.vue)
<template>
  <h1>这是vue目录编排页</h1>
</template>
<script setup>

</script>

<style scoped lang="scss">

</style>
  • 打包前端项目

npm run build

2. django后端

与上一步django添加自定义首页同样的操作,直接修改simple ui配置并拷贝前端vue打包文件即可。

  • django simple ui配置(settings.py)。如果你不希望有些app在admin显示,可以自定义menu_display配置。
# 自定义菜单
SIMPLEUI_CONFIG = {
    'system_keep': True,
    'menu_display': ['内容管理', '用户管理', '网站管理', '行为记录', '其他工具', 'Django APScheduler'],
    'menus': [
        {
            'name': '其他工具',
            'icon': 'fas fa-wrench',
            'models': [
                {
                    'name': '目录编排',
                    'icon': 'fas fa-folder-open',
                    'url': '/home/#/directory/'
                }
            ]
        }
    ]
}
  • 将前端打包后的dist拷贝到django项目static目录下后,无需添加路由和视图。

访问admin页面,验证自定义页面是否添加成功。

在这里插入图片描述

五、效果演示

1. admin首页

在这里插入图片描述

2. 自定义页面-目录编排

在这里插入图片描述

查看更多

微信公众号

微信公众号同步更新,欢迎关注微信公众号第一时间获取最近文章。

博客网站

崔亮的博客-专注devops自动化运维,传播优秀it运维技术文章。更多原创运维开发相关文章,欢迎访问https://www.cuiliangblog.cn文章来源地址https://www.toymoban.com/news/detail-425822.html

到了这里,关于Django SimpleUI与vue的完美结合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前后端】django与vue的结合使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使用一些开发工具,本文主要介绍了django和vue的结合使用。 前后端分离是一种软件架构模式,旨在将应用程序的前端和后端部分分开

    2024年04月27日
    浏览(18)
  • Python爬虫进阶(1),Django+Selenium+Mysql+SimpleUI,从零开始搭建自己的爬虫后台管理系统

    如果爬虫做完的话都会发现每个文件要么保存到csv或者是其他格式的文件中,这样做多少会有些麻烦,所以需要将这些内容保存起来方便自己管理和查看内容。 相对于flask而言Django有着相对成熟的一个后台管理系统配合上其他一些插件就可以做到即插即用的效果而不用自己再

    2024年02月08日
    浏览(29)
  • Django使用DRF + Simple JWT 完成小程序使用自定义用户的注册、登录和认证

    在已经配置好djangorestframework-simplejwt的前提下进行 小程序用户模型类 这里的模型类并未继承django自带的用户模型类,好处是后面小程序用户也是没法进行admin端的,缺点是可能会对django自带的权限管理有影响,如果只有小程序端的用户的话没问题,但是如果还有其它用户的话

    2024年02月10日
    浏览(30)
  • django 人机校验我是人类-使用hCaptcha或Turnstile代替simple-captcha

    此教程非权威,仅是个人搭建网站中探索的总结,留给后人的基本流程的简介 首先,确保你已经完成了django知识的学习, 以便不出现未经了解且不易理解的错误,本文不会叙述基础教程,如若此, 请跳转至djangoproject官网教程. 好了! 让我们开始探索的旅途! CAPTCHA项目是Co

    2024年02月12日
    浏览(23)
  • 【后端】Django与Django REST Framework的结合使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使用一些开发语言,本文主要介绍Django与Django REST Framework的结合使用。 创建Django项目通常包括以下步骤: 安装Django : 首先,确保你的

    2024年04月26日
    浏览(20)
  • 使用Anaconda3结合vscode来实现django项目的建立(绝好的介绍)20230608

    回答: 知识背景 Anaconda3的安装包默认会安装最新版本的Python解释器。如果您想在安装时指定Python解释器的版本,您需要下载对应版本的Anaconda3。例如,如果您想使用Python 3.7,您需要下载Anaconda3 2019.10,这个版本的Anaconda3包含了Python 3.7。 您可以在Anaconda的(https://repo.anaconda.com

    2024年02月09日
    浏览(25)
  • 如何使用Django 结合WebSocket 进行实时目标检测呢?以yolov5 为例,实现:FPS 25+ (0: 系统简介与架构)

    访问:http://127.0.0.1:8000/ObjectDetection/ObjectDetection1/ 先看下效果:两个摄像头实时展示 之后更新了效果,打算加上检测结果和 FPS ,结果加上FPS 实测了一下,好家伙一秒30-40 帧都行 在我的3060 上,这是python 写的 前后端实时检测你敢信,还两个摄像头机位。

    2023年04月08日
    浏览(26)
  • DDD 与 CQRS 才是黄金组合

    在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能抗住!” 开发一个后台管理功能,业务反馈说数据一直不对,对比后发现缓存与

    2024年02月10日
    浏览(19)
  • 【Django+Vue】英文成绩管理平台--20230727

    能够满足大部分核心需求(标绿):报表部分应该比较难。 前端编译 https://gitlab.com/m7840/toeic_vue_dist Vue源码 https://gitlab.com/m7840/toeic_vue Django源码 https://gitlab.com/m7840/toeic_python 学员界面:前后端分离 管理员界面:前后端不分离 1. vue.js的坑 Django的vue.js用axios请求数据,只适用于

    2024年02月14日
    浏览(29)
  • python+django在线借阅图书管理系统vue

    本论文是以构建图书借阅为目标,使用  django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块,图书归还模块,管理员登录等)以及后台数据库管理。从网站设计到具

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包