一、Flask 简介

Flask:
Flask是一个用Python编写的Web应用程序框架。Flask基于Werkzeug(WSGI工具包)和Jinja2模板引擎。

Web Framework:
Web Application Framework(Web应用程序框架)或简单的Web Framework(Web框架)表示一个库和模块的集合,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。

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

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

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

Flask通常被称为微框架。它旨在保持应用程序的核心简单且可扩展。Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以向应用程序添加此类功能。一些受欢迎的Flask扩展将在本教程后续章节进行讨论。

二、Flask 环境搭建

通过anaconda直接新建虚拟环境:bigdata,然后在该环境下安装flask。

pip install flask

三、应用

1.简单例子

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World'if __name__ == '__main__':app.run()

输出:

访问:http://127.0.0.1:5000/

2.代码解析

  1. 导入 Flask 类。 该类的实例将会成为WSGI 应用。
  2. 创建一个该类的实例。第一个参数是应用模块或者包的名称。如果使用一个单一模块(就像本例),那么应当使用 name ,因为名称会根据这个模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 ‘main’ , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以找到模板和静态文件等东西
  3. 使用 route() 装饰器来告诉 Flask 触发函数的 URL。
  4. 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。

app.route(rule, options)

  • rule 参数表示与该函数的URL绑定。
  • options 是要转发给基础Rule对象的参数列表。

在上面的示例中,’/ ’ URL与hello_world()函数绑定。因此,当在浏览器中打开web服务器的主页时,将呈现该函数的输出。
最后,Flask类的run()方法在本地开发服务器上运行应用程序。

app.run(host, port, debug, options)

所有参数都是可选的:

  • host:要监听的主机名。 默认为127.0.0.1(localhost)。设置为“0.0.0.0”以使服务器在外部可用。
  • port :默认值为5000。
  • debug:默认为false。 如果设置为true,则提供调试信息,可以自动重载代码并显示调试信息。
  • options:要转发到底层的Werkzeug服务器。

2.1 调试模式

虽然 flask 命令可以方便地启动一个本地开发服务器,但是每次应用代码修改之后都需要手动重启服务器。这样不是很方便, Flask 可以做得更好。如果你打开调试模式,那么服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个有用的调试器。

在代码中,在运行或将调试参数传递给run()方法之前,通过将application对象的debug属性设置为True来启用Debug模式。

app.debug = True
app.run()
# 或者
app.run(debug = True)

2.2 绑定IP和端口

默认情况下,Flask绑定IP为127.0.0.1,端口为5000。我们也可以通过下面的方式自定义:

app.run(host='0.0.0.0', port=80, debug=True)

0.0.0.0代表电脑所有的IP。80是HTTP网站服务的默认端口。什么是默认?比如,访问网站http://www.example.com,其实是访问的http://www.example.com:80,只不过:80可以省略不写。

3.Flask 路由

现代Web框架使用路由技术来帮助用户记住应用程序URL。可以直接访问所需的页面,而无需从主页导航。

Flask中的route()装饰器用于将URL绑定到函数。例如:

@app.route('/hello')
def hello_world():return 'hello world'

在这里,URL'/ hello'规则绑定到hello_world()函数。 因此,如果用户访问http://localhost:5000/hello ,hello_world()函数的输出将在浏览器中呈现。

4.Flask 变量规则

通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为<converter:variable_name>。它作为关键字参数传递给与规则相关联的函数。在以下示例中,route()装饰器的规则参数包含附加到URL'/hello'的<name>。

from flask import Flask
app = Flask(__name__)@app.route('/hello/<name>')
def hello_name(name):return 'Hello %s!' % nameif __name__ == '__main__':app.run(debug=True)

运行,访问:http://localhost:5000/hello/Yunlord

除了默认字符串变量部分之外,还可以使用以下转换器构建规则:

转换器 描述
string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串
from flask import Flask
app = Flask(__name__)@app.route('/post/<int:post_id>')
def show_post(post_id):# show the post with the given id, the id is an integerreturn 'Post %d' % post_id@app.route('/path/<path:subpath>')
def show_subpath(subpath):# show the subpath after /path/return 'Subpath %s' % subpathif __name__ == '__main__':app.run(debug=True)

4.1 唯一的 URL / 重定向行为

以下两条规则的不同之处在于是否使用尾部的斜杠:

@app.route('/projects/')
def projects():return 'The project page'@app.route('/about')
def about():return 'The about page'

projects 的 URL 是中规中矩的,尾部有一个斜杠,看起来就如同一个文件夹。 访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。

about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这个 URL 时添加了尾部斜杠就会得到一个 404 错误。这样可以保持 URL 唯一,并帮助 搜索引擎避免重复索引同一页面。

5.Flask URL构建

url_for()函数对于动态构建特定函数的URL非常有用。该函数接受函数的名称作为第一个参数,以及一个或多个关键字参数,每个参数对应于URL的变量部分。

from flask import Flask, redirect, url_for
app = Flask(__name__)@app.route('/admin')
def hello_admin():return 'Hello Admin'@app.route('/guest/<guest>')
def hello_guest(guest):return 'Hello %s as Guest' % guest@app.route('/user/<name>')
def hello_user(name):if name == 'admin':return redirect(url_for('hello_admin'))else:return redirect(url_for('hello_guest', guest=name))if __name__ == '__main__':app.run(debug=True)

redirect函数用于重定向,实现机制很简单,就是向客户端(浏览器)发送一个重定向的HTTP报文,浏览器会去访问报文中指定的url。

6.Flask HTTP方法

Web 应用使用不同的 HTTP 方法处理 URL 。当你使用 Flask 时,应当熟悉 HTTP 方法。 缺省情况下,一个路由只回应 GET 请求。 可以使用 route() 装饰器的 methods 参数来处理不同的 HTTP 方法:

方法 描述
GET 以未加密的形式将数据发送到服务器,最常见的方法。
HEAD 和GET方法相同,但没有响应体。
POST 用于将HTML表单数据发送到服务器,POST方法接收的数据不由服务器缓存。
PUT      用上传的内容替换目标资源的所有当前表示。
DELETE 删除由URL给出的目标资源的所有当前表示。

默认情况下,Flask路由响应GET请求。但是,可以通过为route()装饰器提供方法参数来更改此首选项。

为了演示在URL路由中使用POST方法,首先打开txt,输入下面代码,创建一个HTML表单,然后并使用POST方法将表单数据发送到URL。
将以下脚本另存为login.html。

<html><body><form action = "http://localhost:5000/login" method = "post"><p>Enter Name:</p><p><input type = "text" name = "nm" /></p><p><input type = "submit" value = "submit" /></p></form></body>
</html>

运行以下代码:

from flask import Flask, redirect, url_for, request
app = Flask(__name__)@app.route('/success/<name>')
def success(name):return 'welcome %s' % name@app.route('/login',methods = ['POST', 'GET'])
def login():if request.method == 'POST':user = request.form['nm']return redirect(url_for('success',name = user))else:user = request.args.get('nm')return redirect(url_for('success',name = user))if __name__ == '__main__':app.run(debug = True)

在浏览器中打开login.html,在文本字段中输入name,然后单击提交。

表单数据将POST到表单标签的action子句中的URL。

http://localhost/login映射到login()函数。由于服务器通过POST方法接收数据,因此通过以下步骤获得从表单数据获得的“nm”参数的值:
表单数据将POST到表单标签的action子句中的URL。

user = request.form['nm']

它作为变量部分传递给’/ success’ URL。浏览器在窗口中显示welcome消息。

在login.html中将方法参数更改为’GET’,然后在浏览器中再次打开它。服务器上接收的数据是通过GET方法获得的。通过以下的步骤获得’nm’参数的值:

User = request.args.get('nm')

这里,args是包含表单参数对及其对应值对的列表的字典对象。与’nm’参数对应的值将像之前一样传递到’/ success’ URL。


参考:

轻量级web开发框架——Flask 基础教程_爱编程的喵汪人的博客-CSDN博客_flask框架

python flask框架详解_尘世风的博客-CSDN博客_flask框架

Python flask框架入门相关推荐

  1. python Flask框架如何请求及返回数据——flask详细教程

    python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...

  2. python web 框架例子_最快的 Python Web 框架入门

    原标题:最快的 Python Web 框架入门 来源:Python开发 ID:PythonPush 速度比较 框架 实现基础 每秒请求数 平均时间 Sanic Python 3.5 + uvloop ...

  3. python flask快速入门与进阶 百度云_Python Flask快速入门与进阶

    课程目录 1-1 Python Flask快速入门与进阶.mp4 2-1 windows环境安装开发环境 (上).mp4 2-2 windows环境安装开发环境 (下).mp4 2-3 配置开发环境. ...

  4. Python Flask框架-开发简单博客-认证蓝图

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络攻防 ...

  5. Python Django框架入门第一课

    Python Django框架入门 1.Django简介 Django使用python开发的一个免费的Web框架,几乎囊括了Web应用的方方面面,用于快速搭建高性能.优雅的网站. 2.配Django运 ...

  6. python flask框架剖析_python flask框架实现传数据到js的方法分析

    本文实例讲述了python flask框架实现传数据到js的方法.分享给大家供大家参考,具体如下: 首先要清楚后台和前端交互所采用的数据格式. 一般选JSON,因为和js完美贴合. 后台返回的数据进行 ...

  7. Python Flask框架

    Python Flask框架 Flask框架简介 安装过程 Falsk程序的运行过程 基本语法/结构 如有错误,请指正 Flask框架简介 Flask是一个轻量级的可定制框架,使用Python语言编写 ...

  8. 【25】数据可视化:基于 Echarts + Python Flask框架动态实时大屏范例 - 企业宣传

    目录 效果展示 多主题样式 一. 确定需求方案 1.确定产品上线部署的屏幕分辨率 2.部署方式 二.整体架构设计 三.编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码) 1.前端html代码 - ...

  9. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

最新文章

  1. 编写矩形类 计算矩形面积
  2. Ubuntu下通过 PPA 安装 Komodo 编辑器
  3. Exp9 Web安全基础
  4. C#——《C#语言程序设计》实验报告——数据库编程——基于ADO.NET技术和WPF技术的简单数据库可视化工具DEMO
  5. JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET
  6. excel和html互相转换,Excel2016与Html格式之间的互相转换
  7. 【csdn积分】获得方式大全
  8. ps入门第8天_ps通道_颜色通道Alpha通道 案例:通道抠图
  9. Firefox的下载经管器:FlashGot v1.0 Final发布
  10. 作为南方人,python教你怎么样看雪
  11. leetcode 678 有效的括号字符串
  12. 黑马点评Redis实战(短信登录;商户查询缓存)
  13. Android OTA在线升级一(架构分析)
  14. C++中std::setw()的用法
  15. W5500+DHCP+DNS+MQTT
  16. android手机的内部存储
  17. Linux中rar压缩软件的安装
  18. 软件测试-常见BUG分享
  19. 零售数字化转型DTC模式,只是投网红直播吗?
  20. OpenAI发布新算法MuseNet,让甲壳虫乐队与LadyGaga一起演奏

热门文章

  1. 启动win10组策略管理器gpedit.msc报错
  2. Day33.爬虫基础之PyQuery
  3. 新唐NUC980使用记录:访问以太网(LAN8720A) 启用SSH
  4. http请求时常返回的状态码
  5. 伺服电机常用参数设置_伺服电机常常会设置的几个参数,老铁你都能搞懂么?...
  6. 10.大数据技术之Flink
  7. 访谈报告计算机辅导员,职业访谈の大学辅导员
  8. 你想孩子在幼儿园学到什么?
  9. kml文件批量转shapefile
  10. 经典卷积神经网络(一):LeNet-5和AlexNet