介绍:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。

WSGl:Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。

Werkzeug:它是一个WSGI工具包,它实现了请求,响应对象和实用函数。 这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一。

jinja2:jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。

第一个Flask案例:

第一步安装Flask   : pip install Flask

  1. from flask import Flask
  2. app = Flask(__name__)
  3.  
  4. @app.route('/')
  5. def hello_world():
  6. return 'Hello World'
  7.  
  8. if __name__ == '__main__':
  9. app.run()

    启动结果:

  1.  
  1.  

案例2 :通过session来管理登录数据

  1. from flask import Flask
  2. from flask import render_template
  3. from flask import request
  4. from flask import make_response
  5. from flask import Flask, session, redirect, url_for, escape, request
  6. app = Flask(__name__)
  7. app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
  8.  
  9. @app.route('/')
  10. def index():
  11. if 'username' in session:
  12. username = session['username']
  13. return '登录用户名是:' + username + '<br>' + "<b><a href = '/logout'>点击这里注销</a></b>"
  14. return "您暂未登录, <br><a href = '/login'></b>" + "点击这里登录</b></a>"
  15.  
  16. @app.route('/login', methods=['GET', 'POST'])
  17. def login():
  18. if request.method == 'POST':
  19. session['username'] = request.form['username']
  20. return redirect(url_for('index'))
  21.  
  22. return '''
  23. <form action = "" method = "post">
  24. <p><input type ="text" name ="username"/></p>
  25. <p><input type ="submit" value ="登录"/></p>
  26. </form>
  27.  
  28. '''
  29.  
  30. @app.route('/logout')
  31. def logout():
  32. session.pop('username', None)
  33. return redirect(url_for('index'))
  34.  
  35. if __name__ == '__main__':
  36. app.run(debug=True)

    效果图1

效果图2:

效果3:

案例2:Flask框架之模板渲染

  1. from flask import Flask, render_template
  2.  
  3. app = Flask(__name__)
  4.  
  5. @app.route('/')
  6. def index():
  7. my_int = 18
  8. my_str = 'curry'
  9. my_list = [1, 5, 4, 3, 2]
  10. my_dict = {
  11. 'name': 'durant',
  12. 'age': 28
  13. }
  14.  
  15. # render_template方法:渲染模板
  16. # 参数1: 模板名称 参数n: 传到模板里的数据
  17. return render_template('hello.html',
  18. my_int=my_int,
  19. my_str=my_str,
  20. my_list=my_list,
  21. my_dict=my_dict)
  22.  
  23. if __name__ == '__main__':
  24. app.run(debug=True)
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. </head>
  8.  
  9. <body>
  10. <h2>我是模板</h2>
  11. {{ my_int }}
  12. <br>
  13. {{ my_str }}
  14. <br>
  15. {{ my_list }}
  16. <br>
  17. {{ my_dict }}
  18. <hr>
  19. <h2>模板的list数据获取</h2>
  20. <hr>
  21. {{ my_list[0] }}
  22. <br>
  23. {{ my_list.1 }}
  24. <hr>
  25. <h2>字典数据获取</h2>
  26. <hr>
  27. {{ my_dict['name'] }}
  28. <br>
  29. {{ my_dict.age }}
  30. <hr>
  31. <h2>算术运算</h2>
  32. <br>
  33. {{ my_list.0 + 10 }}
  34. <br>
  35. {{ my_list[0] + my_list.1 }}
  36. </body>
  37.  
  38. </html>

效果图:

python框架之Flask的更多相关文章

  1. python框架之Flask(1)-Flask初使用

    Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...

  2. python框架之Flask基础篇(二)-------- 数据库的操作

    1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...

  3. python框架之Flask(4)-上下文管理

    知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...

  4. python框架之Flask(6)-flask-sqlalchemy&flask-script&flask-migrate使用

    整合SQLAlchemy 安装 pip3 install flask-sqlalchemy 简单使用 from flask import Flask from flask_sqlalchemy imp ...

  5. python框架之Flask基础篇(一)

    一.第一个hello world程序 # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def ...

  6. python框架之Flask基础篇(三)-------- 模版的操作

    1.flask特有的变量和函数: 变量:g.session.request.config 函数:url_for().get_flashed_messages()这个函数注意了啊,记住这是个函数,别忘了 ...

  7. python框架之Flask(2)-路由和视图&Session

    路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 # 示例代码 from flask import Fla ...

  8. python框架之Flask(3)-Blueprint(蓝图)

    蓝图 用途 给开发者提供清晰的目录结构. 使用 目录结构 1.创建项目. 2.在项目目录下创建与项目名同名文件夹. 3.在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 ...

  9. python框架之Flask(5)-@app.before_request原理

    示例 from flask import Flask app = Flask(__name__) @app.before_request def xx(): pass @app.route('/') ...

随机推荐

  1. Netty 框架学习 —— ByteBuf

    概述 网络数据的基本单位总是字节,Java NIO 提供了 ByteBuffer 作为它的字节容器,但这个类的使用过于复杂.Netty 的 ByteBuf 具有卓越的功能性和灵活性,可以作为 Byte ...

  2. PEP 324 subprocess 新的进程模块 -- Python官方文档译文 [原创]

    PEP 324 -- subprocess 新的进程模块(subprocess - New process module) 英文原文:https://www.python.org/dev/peps/p ...

  3. 【NX二次开发】Block UI 文本颜色/字体/宽度

    属性说明 常规     类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical 是否分 ...

  4. Redis五种基础与三种高级数据结构解析

    记得点赞+关注呦. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis 之所以能脱颖而出很大原因是他数据结构丰富,可以支持多种场景.并且 Redis 的数据结构实现以及应用场景在面 ...

  5. JavaScript 中的延迟加载属性模式

    传统上,开发人员在 JavaScript 类中为实例中可能需要的任何数据创建属性.对于在构造函数中随时可用的小块数据来说,这不是问题.但是,如果在实例中可用之前需要计算某些数据,您可能不想预先支付该费 ...

  6. csp-s模拟测试56(10.2)Merchant「二分」·Equation「树状数组」

    又死了......T1 Merchant 因为每个集合都可以写成一次函数的形式,所以假设是单调升的函数,那么随着t越大就越佳 而单调减的函数,随着t的增大结果越小,所以不是单调的??? 但是我们的单调 ...

  7. springboot+kurento+coturn+contos的视频通讯服务搭建

    springboot+kurento+coturn+contos的视频通讯服务搭建 服务器CentOS Linux release 7.9.2009 (Core) 本案例成功于20210628 1.默 ...

  8. 03 Git 以及 其 GUI TortoiseGit 的下载与安装

    前面也说过嘛,要紧跟大佬们的步伐--选择最受欢迎的版本控制系统. 而根据 [JetBrains](JetBrains: Essential tools for software developers ...

  9. ceph-csi源码分析(7)-rbd driver-IdentityServer分析

    更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(7)-rbd driver-IdentityServer分析 当 ...

  10. Redis之内存优化

    Redis所有的数据都存在内存中,当前内存虽然越来越便宜,但跟廉价的硬盘相比成本还是比较昂贵,因此如何高效利用Redis内存变得非常重要.高效利用Redis内存首先需要理解Redis内存消耗在哪里,如 ...