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实现的Kmeans++算法实例
Apr 26 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
解析Python中的__getitem__专有方法
Jun 27 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
Python实现的简单排列组合算法示例
Jul 04 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
python基于爬虫+django,打造个性化API接口
Jan 21 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 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
python得到单词模式的示例
2018/10/15 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
入党推优材料
2014/06/02 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
行政主管岗位职责
2015/02/03 职场文书
离婚案件原告代理词
2015/05/23 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书