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编程实现希尔排序
Apr 13 Python
python中reload(module)的用法示例详解
Sep 15 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
python多线程下信号处理程序示例
May 31 Python
Django Rest framework三种分页方式详解
Jul 26 Python
python列表返回重复数据的下标
Feb 10 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Python如何生成xml文件
Jun 04 Python
python 基于卡方值分箱算法的实现示例
Jul 17 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
PHP XML数据解析代码
2010/05/26 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
jquery解决客户端跨域访问问题
2015/01/06 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
python中zip()方法应用实例分析
2016/04/16 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
使用Python pip怎么升级pip
2020/08/11 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
HTML5 新事件 小结
2009/07/16 HTML / CSS
中专毕业生自我鉴定
2013/11/21 职场文书
教师绩效考核方案
2014/01/21 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
六五普法学习心得体会
2016/01/21 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server