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 切片和range()用法说明
Mar 24 Python
python图像处理之镜像实现方法
May 30 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Python实现的爬虫功能代码
Jun 24 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
numpy实现RNN原理实现
Mar 02 Python
python 实现的截屏工具
May 08 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python itertools模块详解
2015/05/09 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
销售工作岗位职责
2013/12/24 职场文书
节能减排倡议书
2014/04/15 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
VUE递归树形实现多级列表
2022/07/15 Vue.js