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 相关文章推荐
python3编码问题汇总
Sep 06 Python
python计算列表内各元素的个数实例
Jun 29 Python
Python requests库用法实例详解
Aug 14 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
Python函数中的不定长参数相关知识总结
Jun 24 Python
python ConfigParser库的使用及遇到的坑
Feb 12 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
python获取交互式ssh shell的方法
2019/02/14 Python
详解Python 解压缩文件
2019/04/09 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
英语专业求职信
2014/07/08 职场文书
卖车协议书范例
2014/09/16 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS
vue3不同环境下实现配置代理
2022/05/25 Vue.js