Python学习之web框架 Flask
一、通过PIP 安装Flask
1.1 Windows环境安装pip
A、首先PIP进入官网(https://pypi.python.org/pypi/pip)下载gz包
B、对gz压缩包进行解压,解压目录为(C:\Python\pip-10.0.1)
C、通过python命令执行,解压目录下的setup.py文件,安装pip
python setup.py install
D、对pip进行环境配置(安装完pip后,会在python的scripts文件夹中多处pip.exe文件)
1.2安装flask
A、安装Pip完成后可以通过命令查看是否成功
pip -V
B、通过Pip命令安装flask
pip install flask
二、Flask 快速入门
2.1 第一个最小应用
from flask import Flask app = Flask(__name__)@app.route('/') def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()
把它保存成 hello.py (或者类似的文件),然后用 Python 解释器运行它。确保你的应用不叫做 flask.py, 因为这会与 Flask 本身冲突。
python hello.py* Running on http://127.0.0.1:5000/
现在浏览 http://127.0.0.1:5000/,你会看到你的 Hello World 问候。
那么这段代码做了什么?
- 首先我们导入了类
Flask
。这个类的实例化将会是我们的 WSGI 应用。第一个参数是应用模块的名称。 如果你使用的是单一的模块(就如本例),第一个参数应该使用 __name__。因为取决于如果它以单独应用启动或作为模块导入, 名称将会不同 ('__main__'
对应于实际导入的名称)。获取更多的信息,请阅读Flask
的文档。 - 接着,我们创建一个该类的实例。我们传递给它模块或包的名称。这样 Flask 才会知道去哪里寻找模板、静态文件等等。
- 我们使用装饰器
route()
告诉 Flask 哪个 URL 才能触发我们的函数。 - 定义一个函数,该函数名也是用来给特定函数生成 URLs,并且返回我们想要显示在用户浏览器上的信息。
- 最后我们用函数
run()
启动本地服务器来运行我们的应用。if __name__ =='__main__':
确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。
2.2 调试模式
run()
方法是十分适用于启动一个本地开发服务器,但是你需要在修改代码后手动重启服务器。 这样做并不好,Flask 能做得更好。如果启用了调试支持,在代码修改的时候服务器能够自动加载, 并且如果发生错误,它会提供一个有用的调试器。
有两种方式开启调式模式。一种是在应用对象上设置标志位:
app.debug = True app.run()
或者作为 run 的一个参数传入:
app.run(debug=True)
两种方法效果是一样的。
2.3 路由
路由变量规则
为了给 URL 增加变量的部分,你需要把一些特定的字段标记成 <variable_name>
。这些特定的字段将作为参数传入到你的函数中。当然也可以指定一个可选的转换器通过规则 <converter:variable_name>
。 这里有一些不错的例子:
@app.route('/projects/')def projects():return 'The project page'@app.route('/about')def about():return 'The about page'
唯一 URLs / 重定向行为
Flask 的 URL 规则是基于 Werkzeug 的 routing 模块。 该模块背后的想法是基于 Apache 和早期的 HTTP 服务器定下先例确保优雅和唯一的 URL。
以这两个规则为例:
@app.route('/projects/') def projects():return 'The project page'@app.route('/about') def about():return 'The about page'
虽然它们看起来确实相似,但它们结尾斜线的使用在 URL 定义 中不同。 第一种情况中,规范的 URL 指向 projects 尾端有一个斜线。 这种感觉很像在文件系统中的文件夹。访问一个结尾不带斜线的 URL 会被 Flask 重定向到带斜线的规范URL去。
然而,第二种情况的 URL 结尾不带斜线,类似 UNIX-like 系统下的文件的路径名。 访问结尾带斜线的 URL 会产生一个 404 “Not Found” 错误。
当用户访问页面时忘记结尾斜线时,这个行为允许关联的 URL 继续工作, 并且与 Apache 和其它的服务器的行为一致。另外,URL 会保持唯一,有助于避免搜索引擎索引同一个页面两次。
2.4 接受请求数据
对于 web 应用来说,对客户端发送给服务器的数据做出反应至关重要。在 Flask 中由全局对象 request
来提供这些信息。如果你有一定的 Python 经验,你会好奇这个对象怎么可能是全局的,并且 Flask 是怎么还能保证线程安全。 答案是上下文作用域:
Flask 中的某些对象是全局对象,但不是通常的类型。这些对象实际上是给定上下文的局部对象的代理。 虽然很拗口,但实际上很容易理解。
想象下线程处理的上下文。一个请求传入,web 服务器决定产生一个新线程(或者其它东西, 底层对象比线程更有能力处理并发系统)。当 Flask 开始它内部请求处理时,它认定当前线程是活动的上下文并绑定当前的应用和 WSGI 环境到那 个上下文(线程)。它以 一种智能的方法来实现,以致一个应用可以调用另一个应用而不会中断。
所以这对你意味着什么了?如果你是做一些类似单元测试的事情否则基本你可以完全忽略这种情况。 你会发现依赖于请求对象的代码会突然中断,因为没有请求对象。解决方案就是自己创建一个请求并把它跟上下文绑定。 针对单元测试最早的解决方案是使 用 test_request_context()
上下文管理器。结合 with 声明,它将绑定一个测试请求来进行交互
2.5 Cookies
你可以用 cookies
属性来访问 cookies。你能够用响应对象的 set_cookie
来设置 cookies。请求对象中的 cookies
属性是一个客户端发送所有的 cookies 的字典。 如果你要使用会话(sessions),请不要直接使用 cookies 相反用 Flask 中的 会话,Flask 已经在 cookies 上增加了一些安全细节。
读取 cookies:
from flask import request@app.route('/') def index():username = request.cookies.get('username')# use cookies.get(key) instead of cookies[key] to not get a# KeyError if the cookie is missing.
存储 cookies:
from flask import make_response@app.route('/') def index():resp = make_response(render_template(...))resp.set_cookie('username', 'the username')return resp
注意 cookies 是在响应对象中被设置。由于通常只是从视图函数返回字符串, Flask 会将其转换为响应对象。 如果你要显式地这么做,你可以使用 make_response()
函数接着修改它。
有时候你可能要在响应对象不存在的地方设置 cookie。利用 延迟请求回调 模式使得这种情况成为可能。
2.6 重定向和错误
你能够用 redirect()
函数重定向用户到其它地方。能够用 abort()
函数提前中断一个请求并带有一个错误代码。 这里是一个它们如何工作的例子:
from flask import abort, redirect, url_for@app.route('/') def index():return redirect(url_for('login'))@app.route('/login') def login():abort(401)this_is_never_executed()
这是一个相当无意义的例子因为用户会从主页重定向到一个不能访问的页面( 401意味着禁止访问), 但是它说明了重定向如何工作。
默认情况下,每个错误代码会显示一个黑白错误页面。如果你想定制错误页面,可以使用 errorhandler()
装饰器:
from flask import render_template@app.errorhandler(404) def page_not_found(error):return render_template('page_not_found.html'), 404
注意到 404
是在 render_template()
调用之后。告诉 Flask 该页的错误代码应是 404 , 即没有找到。默认的 200 被假定为:一切正常。
转载于:https://www.cnblogs.com/wuwei928/p/9117661.html
Python学习之web框架 Flask相关推荐
- [转载] Python轻量Web框架Flask使用
参考链接: Python | 使用Flask进行Web开发简介 Python语言近些年越来越火,其特点是开发迅速,语法简单,可移植等.本人就Python3基础语法写了Demo:https://gith ...
- Python超级明星WEB框架Flask
Flask简介 Flask是一个相对于Django而言轻量级的Web框架. 和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug和模 ...
- 基于Python语言的Web框架flask实现的校园二手物品发布平台
目录 1.需求分析 1 1.1系统目标 1 1.2系统功能需求 1 1.3系统的输入输出需求 2 1.4系统的性能需求 2 2.可行性分析 2 2.1 可行性研究前提 2 2.2 要求 3 3.数据库 ...
- 新浪云python示例_Python Web框架Flask中使用新浪SAE云存储实例
对于部署在新浪应用引擎SAE上的项目,使用新浪SAE云存储是不错的存储方案. 新浪SAE云存储仅能在SAE环境中正常使用,对它进行简单封装后,可以直接在Flask中使用,项目代码见GitHub上Fla ...
- 盘点Python网页开发轻量级框架Flask知识(下篇)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一曲新词酒一杯,去年天气旧亭台. ...
- python四大主流web框架
python四大主流web框架 转载自博客:https://www.cnblogs.com/an-wen/p/11330834.html --爱文飞翔 Python 四大主流 Web 编程框架 目前P ...
- 手撸web框架即引入框架思想,wsgierf模块,动静态网页,模板语法jinja2,python三大主流web框架,django安装,三板斧...
手撸web框架 web框架 什么是web框架? 暂时可理解为服务端. 软件开发架构 C/S架构 B/S架构 # 后端 import socketserver = socket.socket() # 不 ...
- Python之简易Web框架搭建
Python之简易Web框架搭建 Web框架介绍 WSGI协议 Web框架开发 项目结构 MyWebServer.py 之前的静态服务器代码 WSGI协议的要求 更新代码 framework.py 返 ...
- 框架详解_详解:python Web框架flask表单实现(建议收藏)
今天为大家带来的内容是:python框架flask表单实现详解 文章内容主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...
最新文章
- Ipython的Window与Linux详细安装
- 浅谈 UC 国际信息流推荐
- php : RBAC 基于角色的用户权限控制-表参考
- halcon算子之tuple_gen_const,用于生成特定长度的元组并且初始化其元素
- RedisTemplate value序列化导致的问题
- [Leetcode][第332题][JAVA][重新安排行程][欧拉回路 / 欧拉通路][优先队列][DFS]
- springboot+dubbo+nacos开发实战
- 用vuejs如何实现ajax,vue.js如何实现ajax
- WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置
- C++ OpenCV 学习笔记【0】- 未整理,草稿记录用
- (HDFS)搭建eclipse搭建hadoop开发平台以及hdfs api调用——大数据分析及其可视化4
- 星号密码查看 android,侠客密码查看器怎么查看已输入的星号密码
- 使用RDP报表工具实现多级表头动态列
- Red Hat Enterprise Linux 7.9 下载
- 自带win10系统换win7的那些坑
- 64位锐捷多网卡、VMWareNat模式、ICS共享破解
- 北京服务器机房位置,北京服务器机房
- 【常见错误】Quartz常见错误
- C语言分数加减乘除化简操作集(含测试源码)
- iOS——应用内调用Face ID、Touch ID