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 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
Python中的匿名函数使用简介
Apr 27 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
python开头的coding设置方法
Aug 08 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
Python jieba库分词模式实例用法
Jan 13 Python
Python3中对json格式数据的分析处理
Jan 28 Python
Python 解决空列表.append() 输出为None的问题
May 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
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
php实现简单加入购物车功能
2017/03/07 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
初探nodeJS
2017/01/24 NodeJs
jQuery validata插件实现方法
2017/06/25 jQuery
js使用highlight.js高亮你的代码
2017/08/18 Javascript
JS中的BOM应用
2018/02/02 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
QML实现圆环颜色选择器
2019/09/25 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python三大神器之fabric使用教程
2019/06/10 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
详解pandas赋值失败问题解决
2020/11/29 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
在校硕士自我鉴定
2014/01/23 职场文书