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 ZipFile模块详解
Nov 01 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
Python中的Numpy矩阵操作
Aug 12 Python
python实现图片筛选程序
Oct 24 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
Python网络编程之ZeroMQ知识总结
Apr 25 Python
python turtle绘图命令及案例
Nov 23 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
linux iconv方法的使用
2011/10/01 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python timeit模块的使用实践
2020/01/13 Python
Python小白垃圾回收机制入门
2020/06/09 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
STP的判定过程
2012/10/01 面试题
群众路线党课主持词
2014/04/01 职场文书
大学毕业寄语大全
2014/04/10 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2014年转正工作总结
2014/11/08 职场文书
介绍信格式
2015/01/30 职场文书
暑期工社会实践报告
2015/07/13 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
业务员管理制度范本
2015/08/06 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
Python进程间的通信之语法学习
2022/04/11 Python