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中模块与包有相同名字的处理方法
May 05 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Pycharm设置界面全黑的方法
May 23 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
利用python生成照片墙的示例代码
Apr 09 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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实现Mysql读写分离
2013/06/28 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
js模糊查询实例分享
2016/12/26 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python遍历数组的方法小结
2015/04/30 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python生成数字图片代码分享
2017/10/31 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python实现关键词提取的示例讲解
2018/04/28 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
股东合作协议书
2014/09/12 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
学历证明范文
2015/06/16 职场文书
优秀志愿者感言
2015/08/01 职场文书
公司车队管理制度
2015/08/04 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
windows安装python超详细图文教程
2021/05/21 Python
MySQL GTID复制的具体使用
2022/05/20 MySQL