详解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代码调试的几种方法总结
Apr 15 Python
python 爬取微信文章
Jan 30 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python七夕浪漫表白源码
Apr 05 Python
Python适配器模式代码实现解析
Aug 02 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
python实现双色球随机选号
Jan 01 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
Python datetime 如何处理时区信息
Sep 02 Python
通俗讲解python 装饰器
Sep 07 Python
彻底解决Python包下载慢问题
Nov 15 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 中include()与require()的对比
2006/10/09 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python openpyxl使用方法详解
2019/07/18 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
护士自我评价范文
2014/01/25 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
学校国庆节活动总结
2015/03/23 职场文书
2015年暑假工作总结
2015/07/13 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android