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的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python实现队列的方法
May 26 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
Python语言的变量认识及操作方法
Feb 11 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
python sys.argv[]用法实例详解
May 25 Python
python 中字典嵌套列表的方法
Jul 03 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python矩阵的转置和逆转实例
Dec 12 Python
Python argparse模块应用实例解析
Nov 15 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 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将向Java靠拢
2006/10/09 PHP
PHP连接access数据库
2008/03/27 PHP
destoon各类调用汇总
2014/06/20 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
详解thinkphp的Auth类认证
2021/05/28 PHP
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
Python面试不修改数组找出重复的数字
2022/05/20 Python