Flask web开发处理POST请求实现(登录案例)


Posted in Python onJuly 26, 2018

本文我们以一个登录例子来说明Flask对 post请求的处理机制。

1、创建应用目录,如

mkdir example
cd example

2、在应用目录下创建  run.py文件,内容如下

from flask import Flask
from flask import render_template, redirect,url_for
from flask import request

app = Flask(__name__)

@app.route('/login', methods=['POST','GET'])
def login():
  error = None
  if request.method == 'POST':
    if request.form['username']=='admin':
      return redirect(url_for('home',username=request.form['username']))
    else:
      error = 'Invalid username/password'
  return render_template('login.html', error=error)

@app.route('/home')
def home():
  return render_template('home.html', username=request.args.get('username'))

if __name__ == '__main__':
  app.debug = True
  app.run('0.0.0.0',80)

上面的代码解释如下:

1)上面的代码用到了几个flask的方法

render_template : 将请求定位到模板文件上,处理模板文件后,将结果作为请求的响应返回

redirect:将请求的响应重定向到新的url上。上面的例子是,当登录成功后,重定向到 home页面。

url_for:根据参数生成url

2)request对象的使用

request对象包含了所有的请求信息,通过它可获取所需要的请求信息。

3)app.route增加了methods参数,指明该url支持的http请求方式,默认是get方式。上面例子 /login即作为get,也作为post的请求目标。

3、在应用目录下创建 templates目录,在templates目录下创建 login.html 和 home.html,内容分别如下:

1)login.html文件

<!DOCTYPE html>
<html lang="zh-CN">
 <head>
  <meta charset="utf-8">
  <title>login</title>
 </head>
 <body>
  <form style="margin:20px;border:1px solid red" method="post" action="/login">
    <span>username:</span><input type="text" name="username" id="username"><br/>
    <span>password:</span><input type="password" name="password" id="password"><br/>
    <button type="submit" id="loginBtn">login</button>
  </form>
  {% if error %}
    <h1 style="color:red">{{ error }}!</h1>
  {% endif %}
 </body>
</html>

2)home.html

<!DOCTYPE html>
<html lang="zh-CN">
 <head>
  <meta charset="utf-8">
  <title>home</title>
 </head>
 <body>
  <h1>wlcome {{username}} , this is home</h1>
 </body>
</html>

4、启动服务

在应用目录下运行  python  run.py

5、测试访问

http://192.168.142.138/login

注意:登录成功后,会进入 http://192.168.142.138/home?username=admin 页面

这个url显示不好。可以通过session的方式来不需要将username传入,而是在home.html中通过session获取。

这个在后面的文章中介绍。

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

Python 相关文章推荐
Python中的闭包实例详解
Aug 29 Python
深入理解Python中变量赋值的问题
Jan 12 Python
python实现学生管理系统
Jan 11 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
新手入门学习python Numpy基础操作
Mar 02 Python
Python如何在bool函数中取值
Sep 21 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
python 实现端口扫描工具
Dec 18 Python
基于tensorflow加载部分层的方法
Jul 26 #Python
利用python画出折线图
Jul 26 #Python
浅谈flask源码之请求过程
Jul 26 #Python
python画折线图的程序
Jul 26 #Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 #Python
78行Python代码实现现微信撤回消息功能
Jul 26 #Python
python opencv实现图片旋转矩形分割
Jul 26 #Python
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
js转换对象为xml
2017/02/17 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
初学Python实用技巧两则
2014/08/29 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
python地震数据可视化详解
2019/06/18 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
优秀安全员事迹材料
2014/05/11 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python