使用POST向后台发送数据

Flask app修改

可以直接使用现有的路由处理函数来接收前端发来的数据,server/app.py中的all_res()修改如下:

@app.route('/resources', methods=['GET', 'POST'])
def all_res():response_object = {'status': 'success'}if request.method == 'POST':post_data = request.get_json()RESOURCES.append({'sn': post_data.get('sn'),'teacher': post_data.get('teacher'),'learnt': post_data.get('learnt')})response_object['message'] = '资源添加成功!'else:response_object['resources'] = RESOURCESreturn jsonify(response_object)

并从flask引入request

from flask import Flask, jsonify, request

更改之后,启动或重启Flask服务器。

可以通过curl命令来测试POST:

curl -X POST http://localhost:5000/resources -d  '{"sn": "JUFE-069", "teacher": "雪美千夏", "learnt": "true"}'  -H 'Content-Type: application/json'

也可以使用工具Postman来测试POST是否工作。

在Postman中新建一个Request,如图,选择类型为POST,网址填 http://localhost:5000/resources,Body部分选raw,类型为JSON,并填入一个资源数据{"sn": "JUFE-069", "teacher": "雪美千夏", "learnt": "true"},点击Send之后,可以看到下面返回200 OK和具体内容:

{"message": "资源添加成功!", "status": "success"
}

此时再在浏览器中访问 http://localhost:5000/resources ,可以看到多了一条记录:

具体如何使用curl或如何安装和使用Postman,可以参考网上相关介绍。

Vue app修改

下面,需要为页面添加输入模态框(modal)。打开client/src/components/Resources.vue,在</div></template>前面添加如下代码:

<b-modal ref="addResModal"id="res-modal"title="添加新资源"hide-footer><b-form @submit="onSubmit" @reset="onReset" class="w-100"><b-form-group id="form-sn-group"label="编号:"label-for="form-sn-input"><b-form-input id="form-sn-input"type="text"v-model="addResForm.sn"requiredplaceholder="输入编号"></b-form-input></b-form-group><b-form-group id="form-teacher-group"label="老师:"label-for="form-teacher-input"><b-form-input id="form-teacher-input"type="text"v-model="addResForm.teacher"requiredplaceholder="输入老师姓名"></b-form-input></b-form-group><b-form-group id="form-learnt-group"><b-form-checkbox-group v-model="addResForm.learnt" id="form-checks"><b-form-checkbox value="true">已学习?</b-form-checkbox></b-form-checkbox-group></b-form-group><b-button type="submit" variant="primary">提交</b-button><b-button type="reset" variant="danger">重置</b-button></b-form>
</b-modal>

然后更新<script></script>的内容:

<script>
import axios from 'axios';export default {data() {return {resources: [],addResForm: {sn: '',teacher: '',learnt: [],},};},methods: {getResources() {const path = 'http://localhost:5000/resources';axios.get(path).then((res) => {this.resources = res.data.resources;}).catch((error) => {// eslint-disable-next-lineconsole.error(error);});},addRes(payload) {const path = 'http://localhost:5000/resources';axios.post(path, payload).then(() => {this.getResources();}).catch((error) => {// eslint-disable-next-lineconsole.log(error);this.getResources();});},initForm() {this.addResForm.sn = '';this.addResForm.teacher = '';this.addResForm.learnt = [];},onSubmit(evt) {evt.preventDefault();this.$refs.addResModal.hide();let learnt = false;if (this.addResForm.learnt[0]) learnt = true;const payload = {sn: this.addResForm.sn,teacher: this.addResForm.teacher,learnt,};this.addRes(payload);this.initForm();},onReset(evt) {evt.preventDefault();this.$refs.addResModal.hide();this.initForm();},},created() {this.getResources();},
};
</script>

<template>中找到添加资源按钮的那个button标签,修改如下:

<button type="button" class="btn btn-info btn-sm" v-b-modal.res-modal>添加资源</button>

测试一下添加资源:

下一节,我们将会在页面上显示添加资源成功的提示。

王加加:用Flask和Vue制作一个单页应用(六)​zhuanlan.zhihu.com

flask 检测post是否为空_用Flask和Vue制作一个单页应用(五)相关推荐

  1. flask 检测post是否为空_使用Flask搭建一个校园论坛-4

    在上一节中完成了注册功能的前期准备工作,在这一节内容中将完成用户注册.登录功能. 1.知识预览 在本届中将学习到以下内容的知识 如何使用wtform来渲染表单 如果使用flask-mail来发送邮件 ...

  2. python制作一个教学网站_小白如何入门Python? 制作一个网站为例

    首先最重要的问题是为什么要学习python?这个问题这个将指导你如何学习Python和学习的方式. 以你最终想制作一个网站为例.从一个通用的学习资源列表开始不仅会消磨你的激情,而且你获得的知识很难应用 ...

  3. python可以制作网站吗_小白如何入门Python? 制作一个网站为例

    首先最重要的问题是为什么要学习python?这个问题这个将指导你如何学习Python和学习的方式. 以你最终想制作一个网站为例.从一个通用的学习资源列表开始不仅会消磨你的激情,而且你获得的知识很难应用 ...

  4. css响应式布局_用 CSS Grid 布局制作一个响应式柱状图

    最新一段时间比较喜欢玩弄图表,出于好奇,我想找出比较好的用 CSS 制作图表的方案.开始学习网上开源图表库,它对我学习新的和不熟悉的前端技术很有帮助,比如这个:CSS Grid. 今天和大家分享我学到 ...

  5. node 获取表单数据 为空_像声明类型一样写表单——基础功能

    从最简单的开始实现,先看一个最简单的场景 先实现这一部分. 首先,我们要遵循一个基本原则,尽量写视图无关的代码. 所以我们把整套代码分成两部分: Core:核心部分,没有任何 React 相关代码的数 ...

  6. 消消乐实现下坠_教你用Vue写一个开心消消乐

    之前做过一个算法题,算法要求就是写一个开心消消乐的逻辑算法,当时也是考虑了一段时间才做出来.后来想了想,既然核心算法都有了,能不能实现一个开心消消乐的小游戏呢,于是花了两天时间做了一个小游戏出来. 效 ...

  7. python接水果游戏代码_【Python】python制作一个接水果和金币的小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 ...

  8. vue 一个组件内多个弹窗_论如何用Vue实现一个弹窗-一个简单的组件实现

    前言 最近在使用element-ui框架,用到了Dialog对话框组件,大致实现的效果,跟我之前自己在移动端项目里面弄的一个弹窗组件差不太多.然后就想着把这种弹窗组件的实现方式与大家分享一下,下面本文 ...

  9. java类只读怎么办_如何在Java中制作一个只读类?

    java类只读怎么办 The question is that "can we make a read-only class in Java?" 问题是"我们可以用Jav ...

最新文章

  1. 通过PowerShell开源社区的Win32-OpenSSH来管理你的Windows服务器
  2. g++ 编译pybind
  3. [Apache]网站页面静态化与Apache调优(图)
  4. java中script类_在Scripting java(javax.script)中导入一个类
  5. 你真的了解用户吗?-浅谈《用户画像》的意义和方法
  6. 微服务pact测试框架_消费者驱动的Pact和Spring Boot测试
  7. php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结
  8. Dubbo-gok8s注册中心设计方案与实现
  9. 《数据结构C语言版》——线性表详解,你一定能够看得懂学得会的宝典
  10. 关于软件定义IT基础设施的未来,深信服是这么思考的
  11. kep server 6.4 激活_轻松一点,一触屏蔽!5G和未来显示的福音——低压激活,敏感元器件专用保护方案...
  12. JavaEE学习13--Jquery
  13. Answers To The Questions from GiGabyte
  14. java jquery分页_如何最简单的实现java分页
  15. java dbaResult_资深DBA经验总结 Oracle数据库最佳实践 PDF 下载
  16. 松下plc安装序列号afpsgr7_《松下PLC 编程软件 FPWINGR7 操作手册 中文高清版》.pdf...
  17. FastStone Capture 7.7 截图工具下载地址及使用
  18. JavaScript 基础概念
  19. 完美黑苹果clover EFI BigSur11.2 神舟K580c i5 BCM94360HMB WIFI蓝牙二合一网卡
  20. Spring之IOC

热门文章

  1. CentOS各版本ISO下载地址
  2. Linux上jdk的安装
  3. 史上最全的正则表达式
  4. Windows无法自动检测此网络的代理设置
  5. 自己看着视频的理解:设计模式之abstractfactory模式(2)
  6. Redis实战之限制操作频率
  7. Java 程序优化之对象池
  8. Sql Server 三个很有用的函数
  9. java远程调用笔记
  10. (未完)httpd进程数查询,prefork模式修改apache最大连接数