使用axios进行前后端数据传输

news/2024/7/11 1:05:42 标签: django, python, javascript, json, ajax, vue.js, es6

最近在和朋友合作写一个新的项目,前后端进行了分离,既然是分离的,肯定需要交互,今天这篇文章详细介绍一下数据交互的一种常见方式:使用axios,希望对大家有所帮助。

前端:以LoginPage.vue登录页面为例,后端,使用python的djanjo框架

首先,需要在前端进行一些基本的配置,保证数据能够传过去,

在vite,config.js中添加如下配置:

1)

 configWebpack: {
    devServer: {
      proxy: {
        '/api': {
          target: 'http://192.168.234.22:8000/',//这里填入你要请求的接口的前缀
          ws:true,//代理websocked
          changeOrigin:true,//虚拟的站点需要更管origin
          secure: true,                   //是否https接口
          pathRewrite:{
              '^/api':''//重写路径
          }
        }
      }
    }
  }

这里,我最初在配置的时候遇到了一些问题,比较典型的是ECMAScript 模块(ES module)的作用域中使用了 module 关键字,但是该关键字在 ES 模块中并不被支持的问题,上面是修改之后的代码,改之前的代码如下所示:

module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target: 'http://127.0.0.1:8000/',//这里填入你要请求的接口的前缀
                ws:true,//代理websocked
                changeOrigin:true,//虚拟的站点需要更管origin
                secure: true,                   //是否https接口
                pathRewrite:{
                    '^/api':''//重写路径
                }
            }
        }
    }

分析其原因:我们发现,在 ECMAScript 模块中,没有 module 关键字,而是使用 exportimport 来导出和导入模块。

因为我在在一个 Vue 单文件组件中的 <script> 标签中尝试使用了 module 关键字,而这是不正确的。Vue 单文件组件中的 <script> 标签应该使用 export default {...} 导出组件,或者使用 import 导入其他模块。

这种方法是可以解决问题的,我尝试的是另外一种,如同代码1)

然后,接下来是前端向后端传输数据的相关配置,目的是点击登录按钮的时候,让它执行登录操作,然后跳转到首页。

const doLogin = () => {
  // // router.push('/layout')
  // console.log('登录成功,页面即将跳转到首页')
  // 发送 GET 请求
axios({
	url:'http://192.168.234.22:8000/query/',
	method:'GET',
	data:{
		name:form.value.name,
		pswd:form.value.password,
	},
	headers:{
		"Access-Control-Allow-Origin":"*",
		Accept:"*/*"
	}
})
  .then(response => {
    console.log('Response:', response.data);
    console.log('请求成功!');
    router.push('/layout'); // 在请求成功后跳转页面
  })
  .catch(error => {
    console.error('Error:', error);
  })

}

以上内容配置好之后,前端就可以向后端传送数据了。

接下来,看看后端的逻辑:

def query(request):
    query_set = userInfo.objects.all()  # 查询所有数据相当于seleclt *
    for item in query_set:
        print(item.name, item.pswd)
    name = request.GET.get("name")
    pswd = request.GET.get("pswd")
    query_set = userInfo.objects.filter(name=name)  # 查询id=1的数据
    query_set = userInfo.objects.filter(pswd=pswd).first()  # 查询第一条数据
    return HttpResponse("1")请求成功后台为什么会返回1

在登录页面,需要用户输入账号和密码,然后点击登录按钮,服务器收到了前端传过来的数据,进行查询,返回一个对象,因为后端虽然执行了相关的操作,但没有明确返回一个 HttpResponse 对象,因此Django默认会返回一个空响应体,并且状态码为 200

以下是响应结果。

好啦,本期文章就到这里,下期见~


http://www.niftyadmin.cn/n/5472563.html

相关文章

平滑处理在眼动追踪数据分析中的应用

眼动追踪数据的平滑处理技术 眼动追踪技术作为研究人类视觉注意、界面设计效果评估以及增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;中交云互动的重要工具&#xff0c;其准确性和流畅性对实验结果和用户体验至关重要。然而&#xff0c;由于测量误…

设计模式 --5观察者模式

观察者模式 观察者模式的优缺点 优点 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 &#xff0c;而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另…

蓝桥杯第1121题——蓝桥公园

题目描述 小明喜欢观景&#xff0c;于是今天他来到了蓝桥公园。 已知公园有 N 个景点&#xff0c;景点和景点之间一共有 M 条道路。小明有 Q 个观景计划&#xff0c;每个计划包含一个起点 st 和一个终点 ed&#xff0c;表示他想从 st 去到 ed。但是小明的体力有限&#xff0c…

websocket调用http接口

WebSocket 和 HTTP 接口是两种不同的通信协议&#xff0c;WebSocket 是一种建立在 TCP 连接上的全双工通信协议&#xff0c;可以实现服务器和客户端之间的实时通信。HTTP 接口则是基于请求-响应模式的协议&#xff0c;通常用于客户端向服务器发送请求&#xff0c;并获取服务器的…

AI大模型学习浅谈

目录 一&#xff1a;AI大模型学习的理论基础 1.数学基础 2.算法原理 3.模型架构设计 4.大规模数据处理的优势与挑战 二&#xff1a;AI大模型的训练与优化 1. 计算资源分配 2. 参数调优 3. 正则化方法 4. 模型压缩 5. 分布式和并行计算 6. 自动调参 三&#xff1a;…

世链空投|Puffer空投代撸有用吗?Puffer空投代撸应该怎么操作?

世链空投(shilian.com)报道&#xff0c;随着2024年明牌交互空投再掀行业热潮&#xff0c;Puffer空投也走入了舞台中央。Puffer空投不仅得到了Binance Labs等重要投资者的支持&#xff0c;还通过简化定投奖励、扩大奖励范围等方式&#xff0c;将自身定位为流动定投领域的领先解决…

基于matlab解决鸡兔同笼问题

一、什么是鸡兔同笼&#xff1f; 鸡兔同笼问题是一种经典的数学问题&#xff0c;最早出自于《孙子算经》&#xff0c;详细成书时间不详&#xff0c;但可以确定的是&#xff0c;它不早于汉代&#xff0c;不晚于南北朝时期[6]。这个问题在中国数学史上具有重要的意义&#xff0c…

PTA天梯赛练习题 L1-029 是不是太胖了

PTA | 程序设计类实验辅助教学平台 思路简析 挺简单的一道输出题&#xff0c;但是有几个细节注意&#xff1a; 整数类型与浮点类型的混合运算控制小数位数 解法代码 #include<stdio.h> int main () {int H;scanf("%d", &H);float result;result 2 * (H …