详解flask表单提交的两种方式


Posted in Python onJuly 21, 2018

一.通用方式

通用方式就是使用ajax或者$.post来提交。

前端html

<form method="post" action="/mockservice" method = "post">
   ... 

  <div class="form-group">
    <label>data <font style="color:#a94442" size="2">
    <input class="form-control" id="data" name="data">
  </div>
  <div class="form-group">
    <button id="start" type="submit" class="btn btn-default">Submit  </button>
  </div>
</form>

将操作绑定

$(document).ready(function() {
  MockTask.start();
});

MockTask ={
  startId: "start_mock",
  start: function(){
    $('#'+this.startId).click(function (){



...var data = $('#data').val();

      var form_data = JSON.stringify({
       ..."data": data
      });
      MockSubmit.createTask(form_data);

    });
  },
};

MockSubmit = {
  createTask: function(data){
    var url = "/mockservice";
    $.post(url,data,function(result){
      if (result.code != 'SUCC'){
        alert("failed to create a new api.")
      } else {
        alert("succ");
      }
    });
  }
};

function isEmptyString(info) {
  if (info == null || info == undefined || info.length == 0){
    return true;
  }
  return false
}

这样通过js来实现提交表单的功能,然后flask后端

@app.route("/mockservice",methods=['GET','POST'])
def MockController():
  form = MockCreate()
  if request.method == 'POST':
    code = request.form['code']
    api = request.form['api']
  return ...

通用方式的好处就是在其他框架中也适用。而且也并不复杂。

二.比较正宗的flask方式

前端html:

<form method="post" action="/mockservice" method = "post">
   ...

  <div class="form-group">
    <label>data <font style="color:#a94442" size="2">
    <input class="form-control" id="data" name="data">
  </div>
  <div class="form-group">
    <button type="submit" class="btn btn-default">Submit  </button>
  </div>
</form>

前端这时候可以不用绑定操作了,但需要新建一个form对象,用这种方式的好处就是flask有很多内置的方式帮你校验你的提交,一个字:省事!

class MockCreate(Form):
  user_email = StringField("email address",[validators.Email()])
  api = StringField("api",[Required()])
  submit = SubmitField("Submit")
  code = IntegerField("code example: 200",[Required()])
  alias = StringField("alias for api")
  data = TextAreaField("json format",[Required()])

后端这时候就要变成:

@app.route("/mockservice",methods=['GET','POST'])
def MockController():
  form = MockCreate()
  code = form['code']
  api = form['api']
  return render_template("testf.html",api=api,data=code)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python计算字符宽度的方法
Jun 14 Python
Python如何为图片添加水印
Nov 25 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Django 响应数据response的返回源码详解
Aug 06 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
python实现周期方波信号频谱图
Jul 21 #Python
Flask-Mail用法实例分析
Jul 21 #Python
python实现傅里叶级数展开的实现
Jul 21 #Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 #Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 #Python
opencv python 傅里叶变换的使用
Jul 21 #Python
Numpy中的mask的使用
Jul 21 #Python
You might like
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
mailto的使用技巧分享
2012/12/21 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
Python 初始化多维数组代码
2008/09/06 Python
跟老齐学Python之复习if语句
2014/10/02 Python
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python中的print()输出
2019/04/12 Python
python同时替换多个字符串方法示例
2019/09/17 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
学生自我评语大全
2014/04/18 职场文书
大学开学计划书
2014/04/30 职场文书
金融保险专业求职信
2014/09/03 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
质量保证书格式模板
2015/02/27 职场文书
安全教育观后感
2015/06/17 职场文书
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python