ge请求和post请求

### get请求和post请求:
1. get请求:
* 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求。
* 传参:get请求传参是放在url中,并且是通过`?`的形式来指定key和value的。
2. post请求:
* 使用场景:如果要对服务器产生影响,那么使用post请求。
* 传参:post请求传参不是放在url中,是通过`form data`的形式发送给服务器的。

主app文件代码:

  1. from flask import Flask,render_template,request
  2.  
  3. app = Flask(__name__)
  4.  
  5. @app.route('/')
  6. def index():
  7. return render_template('index.html')
  8.  
  9. @app.route('/search/')
  10. def search():
  11. # arguments
  12. q = request.args.get('q')
  13. return "用户提交的查询参数是:%s" % q
  14.  
  15. # 默认的视图函数,只能采用get请求
  16. # 如果你想采用post请求,那么要写明
  17. @app.route('/login/',methods=['GET','POST'])
  18. def login():
  19. if request.method =='GET':
  20. return render_template('login.html')
  21. else:
  22. username = request.form.get('username')
  23. password = request.form.get('password')
  24. print('username:',username)
  25. print('password:',password)
  26. return 'post request'
  27.  
  28. if __name__ == '__main__':
  29. app.run(debug=True)

index.html文件代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. </head>
  7. <body>
  8. <a href="{{ url_for('search',q='hellohhh') }}">跳转到搜索页面</a>
  9. </body>
  10. </html>

login.html文件代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="{{ url_for('login') }}" method="post">
  9. <table>
  10. <tbody>
  11. <tr>
  12. <td>用户名:</td>
  13. <td><input type="text" placeholder="请输入用户名" name="username"></td>
  14. </tr>
  15. <tr>
  16. <td>密码:</td>
  17. <td><input type="text" placeholder="请输入密码" name="password"></td>
  18. </tr>
  19. <tr>
  20. <td></td>
  21. <td><input type="submit" value="登录"></td>
  22. </tr>
  23. </tbody>
  24. </table>
  25. </form>
  26. </body>
  27. </html>

浏览器操作;

终端输出:

### get和post请求获取参数:
1. get请求是通过`flask.request.args`来获取。
2. post请求是通过`flask.request.form`来获取。
3. post请求在模板中要注意几点:
* input标签中,要写name来标识这个value的key,方便后台获取。
* 在写form表单的时候,要指定`method='post'`,并且要指定`action='/login/'`。
4. 示例代码:
```
<form action="{{ url_for('login') }}" method="post">
<table>
<tbody>
<tr>
<td>用户名:</td>
<td><input type="text" placeholder="请输入用户名" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" placeholder="请输入密码" name="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="登录"></td>
</tr>
</tbody>
</table>
</form>
```

Flask web开发之路十二的更多相关文章

  1. Flask web开发之路十四

    今天开始Flask的实战,创建一个项目,实现包括用户登录.注册.注销.发表博客.评论以及检索等功能 首先给出项目结构: 1.config.py文件: 存放各种配置信息 import os # dial ...

  2. Flask web开发之路十

    首先介绍循环引用的问题: 当一个模块需要引用另一个模块的类,而另一个模块又需要引用这个模块的类时,就出现了循环引用,而没法导入类,这时候可以切断其中一条引用路径,增加一个模块 项目结构: models ...

  3. Flask web开发之路二

    今天创建第一个flask项目,主app文件代码如下: # 从flask这个框架导入Flask这个类 from flask import Flask #初始化一个Flask对象 # Flasks() # ...

  4. Flask web开发之路九

    flask_scripts介绍 项目结构如下: flask_script_demo.py文件: from flask import Flask app = Flask(__name__) @app.r ...

  5. Flask web开发之路一

    之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...

  6. Flask web开发之路十三

    g对象 ### 保存全局变量的g属性:g:global1. g对象是专门用来保存用户的数据的.2. g对象在一次请求中的所有的代码的地方,都是可以使用的. 项目结构: g_demo.py文件代码: f ...

  7. Flask web开发之路十一

    首先写一下cookie和session的概念,然后是Flask中session的工作机制以及操作session ### cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态 ...

  8. Flask web开发之路八

    今天写Flask_SQLAlchemy的外键及其关系 ### Flask-SQLAlchemy外键及其关系: 主app文件代码: from flask import Flask from flask_ ...

  9. Flask web开发之路七

    今天写SQLAlchemy数据库 首先介绍ORM的概念: ORM,Object类,Relationship:关系,Mapping:映射,也就是模型关系映射 flask-sqlalchemy是一套ORM ...

随机推荐

  1. [Canvas]空战游戏进阶 增加发射子弹 敌机中弹爆炸功能

    点此下载源码. 图例: 源码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv=" ...

  2. Openstack配置文件管理的变迁之路

    在管理一个Openstack集群时,如何维护配置文件无疑是其中最艰难和繁琐的任务之一.因为你不仅要面对众多的核心服务(nova,keystone,glance,cinder,etc)的配置文件,还需要 ...

  3. Java 8 学习资料汇总【转载】

    原文地址 2014年3月18日,Java SE 8 发布,而 Java 9 预期2016年发布: 2011年7月7日,Java 7 发布,是2009年4月20日被Oracle 以74亿美元收购首次推出 ...

  4. 解决 Firefox 下载文件名乱码扩展 ReDisposition

    作者 muzuiget  发布 2013-03-13 19:23  标签 redisposition Firefox 下载文件名乱码问题由来已久,偶然一两次还可以手动改名,批量下载时简直要亲命,最终我 ...

  5. Android——进程通信/ AIDL/Message相关知识总结贴

    Android多进程通信 http://www.apkbus.com/android-83462-1-1.html Android 跨进程通信(一) http://www.apkbus.com/and ...

  6. PC端和移动端在前端开发上的一些区别,前端里移动端到底比pc端多哪些知识

    (1)———————— 前端里移动端到底比pc端多哪些知识,为啥面试时好多公司都问h5水平如何?我做过几年的web前端开发,就简单谈谈自己的感受吧.首先来看看PC端和移动端在前端开发上的一些区别: ( ...

  7. [ci]jenkins-slave的添加(vm模式,通过ssh和jnlp)

    jenkins-slave的添加-在vm上通过jnlp方式 参考:http://www.cnblogs.com/sparkdev/p/7102622.html 下载 slave.jar和slave-a ...

  8. 《深入应用C++11:代码优化与工程级应用》勘误表

    <深入应用C++11:代码优化与工程级应用>勘误表,会不断更新,欢迎读者留言或发邮件(cpp11book@163.com)给我提出宝贵意见. 1.第7.3节目录final和override ...

  9. vue模板的讲解

    1.项目目录 2.入口文件index.html 3.index.html默认调用的main.js 3.调用的组件app.vue 4.调用组件hello.vue

  10. 【Socket】关于socket长连接的心跳包

    TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...