VUE3+TS+elementplus+Django+MySQL实现从数据库读取数据,显示在前端界面上

一、前言

前面通过VUE3和elementplus创建了一个table,VUE3+TS+elementplus创建table,纯前端的table,以及使用VUE3+TS+elementplus创建一个增加按钮,使用前端的静态数据,显示在表格中。今天通过从后端获取数据来显示在表格上,后端数据通过Django创建models,然后通过navigatecat在数据库表里手动添加一些数据,然后通过前端接口来获取和显示。

二、程序展示

1、前端程序

<template>
	<div >
		<div style="text-align: right;">
			<el-button type="success" >增加</el-button>
		</div>
		
		<el-table		
		:data="engList" 
		:header-cell-style="{background:'#DBDBDB', fontSize:'14px', 'text-align':'center'}" 
		highlight-current-row=true
		border=true
		stripe 
		style="width: 100%" 
		
		>
		
			<el-table-column type="index" label="序号" width="60" align="center"></el-table-column>
			<el-table-column prop="carmodel" label="车型" width="120" align="center"></el-table-column>
			<el-table-column prop="carengmodel" label="发动机型号" width="160" align="center"></el-table-column>
			<el-table-column prop="carengpn" label="发动机物料号" width="160" align="center"></el-table-column>
			<el-table-column prop="carengsn" label="发动机序号" width="160" align="center"></el-table-column>
			<el-table-column prop="careng_remark" label="备注" width="auto"></el-table-column>
			<el-table-column prop="careng_creator" label="创建人" width="100" align="center"></el-table-column>
			<el-table-column prop="careng_creat_time" label="创建时间" width="120" align="center"></el-table-column>
			<el-table-column prop="careng_revision_by" label="修改人" width="100" align="center"></el-table-column>
			<el-table-column prop="careng_rev_time" label="修改时间" width="120" align="center"></el-table-column>
		
		</el-table>
	</div>
</template>

ts代码部分:

<script setup lang = "ts">
	import {ElTable, ElTableColumn} from 'element-plus'
	import {onMounted, ref} from 'vue'
	import { getAllModels } from '@/api/api'

interface Type {
  id: string; // id号
  carmodel: string; // 型号
  carengmodel: string; // 
  carengpn: string; // 发布时间
  carengsn: string;
  careng_remark: string;
  careng_creator: string;
  careng_creat_time: date;
  careng_revision_by: string;
  careng_rev_time: string;
}
	var engList = ref<Type[]>([])

	// const engList = [
	// 	{
	// 	carmodel: '熊猫',
	// 	carengmodel: 'WLZY01',
	// 	carengpn: 'GD15T',
	// 	carengsn: '20220511ASD',
	// 	careng_remark: '升级款',
	// 	careng_creator: '张三',
	// 	careng_creat_time: '2024-5-23',
	// 	careng_revision_by: '',
	// 	careng_rev_time: '',
	// }
	// ]
	onMounted(() => {
		getAllModels('carmodel').then((res: any) => {
	    console.log(res);
	    engList.value = res.data.data;
		// console.log(engList);
	  });
		
	});
	
</script>

通过定义一个interface接口缓存,用来存从后端数据库获取的数据。
通过onMounted将获取所有数据getAllModels(‘carmodel’)绑定在主界面。
getAllModels(‘carmodel’)为接口函数,通过axios来实现。

2、axios接口

首先安装axios,然后新建一个index.TS,里面的程序为:

import Vue from 'vue'
import Axios from 'axios'

const axiosInstance = Axios.create({
    withCredentials: true
})

export default axiosInstance

再新建一个api.ts的文件,里面的程序为:

import axiosInstance from './index'

const axios = axiosInstance
const localhost = '127.0.0.1'  

export const getAllModels = (address) => {
	return axios.request({
		url: 'http://localhost:8000/engineering/' + address + '/',
		method: 'get',
	})
}

localhost = ‘127.0.0.1’ 这个地址是后端Django服务器在本机的地址。

3、后端Django的程序

3.1、在settings里面配置数据库:

# 按如下配置,依次是数据库引擎,名称,用户名,密码,主机,端口。在安装mysql时设置的账户密码等。
DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'NAME': 'ammsdb',
        'USER': 'root',
        'PASSWORD': '123'
    }
}

3.2、在models里创建数据库模型:

# 汽车发动机型号的数据库
class CarEngines(models.Model):
    carmodel = models.CharField(default="", max_length=100, verbose_name="车型", help_text="车型")
    carengmodel =models.CharField(default="", max_length=100, verbose_name="发动机型号", help_text="发动机型号")
    carengpn = models.CharField(default="", max_length=100, verbose_name="发动机物料号", help_text="发动机物料号")
    carengsn = models.CharField(default="", max_length=100, verbose_name="发动机序号", help_text="发动机序号")
    careng_remark = models.CharField(default="", blank=True, null=True, max_length=200, verbose_name="备注", help_text="备注")
    eng_creator = models.CharField(default="", blank=True, max_length=30, verbose_name="创建人", help_text="创建人")
    careng_creator = models.DateField(auto_now_add=True, blank=True, null=True, verbose_name="添加日期", editable=False )
    careng_creat_time = models.TimeField(auto_now_add=True, blank=True, null=True, verbose_name="创建日期", editable=False )
    careng_revision_by = models.CharField(blank=True, default="",   max_length=30, verbose_name="修改人", help_text="修改人")
    careng_rev_time = models.DateField(auto_now=True, blank=True, verbose_name="修改日期")

    class Meta:
        db_table = 'carengines'
        verbose_name = "汽车发动机列表"
        verbose_name_plural = verbose_name


    def __str__(self):
        return self.carmodel

Python manage.py makemogrations、Python manage.py migrate一下,打开navigatecat看一下,数据库表已经创建成功。
创建表格

在表里人工添加一些数据:
数据表

3.3、对models数据库进行序列化

#汽车发动机主数据库序列化
#********************************************
class carenginesModelSerializers(serializers.ModelSerializer):

    class Meta:   #在serializers.ModelSerializer特有
        model = models.CarEngines # 左为序列化地址 右为模型
        fields = '__all__' # '__all__'表示所有字段,也可以在这之后放入列表来序列化特定的字段

3.4、创建视图函数

class carmodelAPIView(APIView):
    def get(self, request):
        response_dic = utils.MyResponse()
        type = models.CarEngines.objects.all()  # 获得全部type对象
        type_ser = carenginesModelSerializers(instance=type, many=True)  # 序列化多条数据需要加上many参数
        response_dic.data = type_ser.data
        print(response_dic.dict)
        return Response(response_dic.dict)

3.5、在urls里增加地址:

urlpatterns = [
	from django.urls import path,re_path
	from . import views
	re_path('^carmodel', views.carmodelAPIView.as_view()),
]

3.6 设置跨域

# 支持跨域配置开始
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

4、运行程序,查看结果

点击pycharm运行后,程序没有问题:
Python运行
前端cnpm run dev一下,可以看到前端获取到了后端数据库的数据:
后端到前端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/654146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单介绍两个方法 学会怎样操作伦敦金

近期伦敦金价格大涨又大跌&#xff0c;不光吸引了多头的关注&#xff0c;空头也考虑入场对伦敦金进行做空操作。然而&#xff0c;这样去操作伦敦金的交易&#xff0c;是需要比较高的操作技巧的。对普通投资者来说&#xff0c;怎么练就这样的操作伦敦金的技巧呢&#xff1f; 复制…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十二)- 微服务(2)

目录 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 4.3 Ribbon饥饿加载 5. Nacos注册中心 5.1 服务注册到nacos 5.2 nacos服务分级存储模型 5.3 根据权重负载均衡 5.4 环境隔离--namespace 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 默认实现是…

看潮成长日程表用户手册(上)

看潮成长日程表用户手册&#xff08;上&#xff09; 一、特色功能1、以每周日程表为主要形式2、全时管控的时间管理3、持续的日程管理4、分期间时间表5、按日排程&#xff0c;按周输出6、夏季作息时间处理7、年度假日处理8、休息日处理9、弹性日程10、完成记录11、多种输出形式…

C++-指针

在C中&#xff0c;指针是至关重要的组成部分。它是C语言最强大的功能之一&#xff0c;也是最棘手的功能之一。 指针具有强大的能力&#xff0c;其本质是协助程序员完成内存的直接操纵。 指针&#xff1a;特定类型数据在内存中的存储地址&#xff0c;即内存地址。 指针变量的定…

【第39天】SQL进阶-SQL设计优化-反范式设计(SQL 小虚竹)

回城传送–》《100天精通MYSQL从入门到就业》 文章目录 零、前言一、练习题目二、SQL思路初始化数据什么是反范式设计例子反范式设计的优点反范式设计的缺点实战中要注意的坑 三、总结四、参考 零、前言 今天是学习 SQL 打卡的第 39 天。 ​ 我的学习策略很简单&#xff0c;…

瓦罗兰特账号怎么注册 瓦罗兰特延迟高用什么加速器

《瓦罗兰特》&#xff08;Valorant&#xff09;是由拳头游戏&#xff08;Riot Games&#xff09;开发并发行的一款免费的多人在线第一人称射击游戏&#xff08;FPS&#xff09;&#xff0c;它结合了传统的硬核射击机制与英雄角色的能力系统&#xff0c;为玩家提供了独特的竞技体…

无忧易售ERP:智慧采购,重塑供应链管理新高度

在当今瞬息万变的商业环境中&#xff0c;高效的采购策略不仅是成本控制的关键&#xff0c;更是企业竞争力的体现。无忧易售ERP&#xff0c;作为一站式企业资源规划解决方案的领航者&#xff0c;专为现代企业量身打造了集成化的采购管理模块&#xff0c;以智能化、自动化的工具为…

适用于Android的最佳数据恢复软件

如果您的 Android 设备崩溃&#xff0c;您需要找到一种方法来取回您的数据。幸运的是&#xff0c;有许多数据恢复程序可以帮助您恢复丢失的文件。有些是免费的&#xff0c;而另一些则需要付费。这是适用于Android设备的最佳数据恢复软件列表。 什么是数据恢复软件&#xff1f; …

python-数据可视化

python-数据可视化 ** 数据可视化指的是通过可视化表示来探索数据&#xff0c;它与数据挖掘**紧密相关&#xff0c;而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表&#xff0c;也可以是数以吉字节的数据 最流行的工具之一…

eBPF可观测之网络流量控制和管理traffic control浅尝

目录 工程背景 环境准备 安装工具​​​ 安装依赖包 安装C依赖库 操作步骤 目录结构 代码展示 效果展示 拓展提升 工程背景 首先发表一个"暴论" eBPF在可观测方面的应用&#xff0c;就是各种google。 不需要学习内核&#xff0c;只要掌握ebpf开发套路。…

什么是“SQL注入攻击”?如何预防和应对?

一、SQL注入攻击的概念 SQL注入攻击是一种针对数据库驱动的应用程序的攻击技术&#xff0c;其中攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码&#xff0c;试图非法访问、操作或破坏后端数据库。当应用程序不正确地处理用户输入&#xff0c;并将其直接拼接到SQ…

【NumPy】NumPy线性代数模块详解:掌握numpy.linalg的核心功能

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

国产数据库替代加速 助力数字中国建设

5月24日&#xff0c;随着第七届数字中国建设峰会在福州的成功举办&#xff0c;释放数据要素价值、发展新质生产力成为当下热议的话题。 数据作为新型生产要素&#xff0c;是数字化、网络化、智能化的重要基础。北京人大金仓信息技术股份有限公司&#xff08;以下简称人大金仓&a…

如何改变echo在Linux下的输出颜色

文章目录 问题回答常规输出字体加粗斜体字带下划线闪烁效果 参考 问题 我正在尝试使用 echo 命令在终端中打印文本。 我想把文本打印成红色。我该怎么做&#xff1f; 回答 你可以使用 ANSI escape codes 定义控制输出颜色的变量。 ANSI escape codes是一种用于在文本中设置…

动手学深度学习23 LeNet

动手学深度学习23 LeNet 1. LeNet2. 代码3. QA 1. LeNet 两层卷积两层池化两层全连接 卷积就是让每一层shape不断压缩变小【高宽减少】&#xff0c;通道数增多&#xff0c;把特征信息放到不同的通道里面。每一个通道认为是一个模式。然后再做全连接的输入。 2. 代码 impor…

4款让人骄傲的国产软件,功能过于强大,却被误认为是外国佬研发

说到国产软件&#xff0c;许多人可能会有“流氓软件、弹屏广告多、隐藏消费套路”等负面印象。 这种偏见导致一些功能强大、用户友好的国产软件被误认为是外国人开发的。 1、格式工厂 格式工厂是一个很实用的国产格式转换工具&#xff0c;它完全免费且没有广告&#xff0c;不…

大模型实战-动手实现单agent

文章目录 入口cli_main.py工具tools.pyprompt prompt_cn.pyLLM 推理 model_provider.py致谢 agent 的核心思想&#xff1a;不断调用 LLM&#xff08;多轮对话&#xff09;&#xff0c;让 LLM 按照指定的格式&#xff08;例如 json&#xff09;进行回复&#xff0c;提取 LLM 回复…

【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1&#xff08;更简单&#xff09;解决方案2&#xff08;更自由&#xff09; 小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 …

巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一个低代码二次开发平台的需求&#xff0c;需要连接多张表的数据然后展示到界面上。 按照java的sql思路&#xff0c;我们直接通过left join去关联表就行了&#xff0c;但是该低代码平台有对sql连表查询有限制&#xff0c;就是有些表它是存在一个domainKey的&…

牛客题霸-SQL大厂面试真题(一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…