windows10+Python3.6的flask学习笔记

来源:互联网 发布:淘宝网汽车坐垫套途观l 编辑:程序博客网 时间:2024/05/21 09:03

沉浸c语言多年,从没接触过python,这次从廖学锋老师的python教程结合《Flask Web开发:基于Python的Web应用开发实战》这本书记录一下学习中的过程和问题,仅作个人学习记录用。
(原书说道:“本书的目的是帮助你完成工作。一般来说,你可以在自己的程序或者文档中使用本书附带
的示例代码。你无需联系我们获得使用许可,除非你要复制大量的代码。”另附署名:Flask Web Development by Miguel Grinberg (O’Reilly). Copyright 2014 Miguel Grinberg, 978-1-449-3726-2)

一、python3.6的安装

参照廖老师的这章安装。

二、使用虚拟环境

书中原话:

Python 3.3 通过 venv 模块原生支持虚拟环境,命令为 pyvenv 。 pyvenv 可以替
代 virtualenv 。不过要注意,在 Python 3.3 中使用 pyvenv 命令创建的虚拟环
境不包含 pip ,你需要进行手动安装。Python 3.4 改进了这一缺陷, pyvenv 完
全可以代替 virtualenv 。

这里,借鉴这个链接Windows下用Python 3.4+自带的venv模块创建虚拟环境来创建。启动虚拟环境之后,进入创建的那个虚拟环境所在的目录(就是Scripts所在的那个目录),输入pip install flask安装flask,安装完后:

(test) E:\test-venv\test>pythonPython 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> import flask>>>

没出现错误提醒,则flask安装完毕。
使用

$ git clone https://github.com/miguelgrinberg/flasky.git
$ cd flasky

$ git checkout 1a

签出程序初始版本。

三、程序的基本结构

在E:\test-venv\test目录下,shift+右键打开命令行,输入Scripts\activate.bat再次激活虚拟环境

E:\test-venv\test>Scripts\activate.bat(test) E:\test-venv\test>pythonPython 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> import flask>>>

这里写图片描述

继续昨天的学习。

3-1初始化

原书说道:

所有 Flask 程序都必须创建一个程序实例。Web 服务器使用一种名为 Web 服务器网关接口
(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所有请求都转交给这
个对象处理。程序实例是 Flask 类的对象,经常使用下述代码创建:

from flask import Flaskapp = Flask(__name__)

Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序 中,Python 的 name变量就是所需的值。 将构造函数的 name 参数传给 Flask 程序,这一点可能会让 Flask 开发新手心生迷惑。Flask用这个参数决定程序的根目录,以便稍后能够找到相对于程 序根目录的资源文件位置。

3-2路由和视图函数

原书在这小节每句话我都觉得很重要:

客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask 程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到 Python 函数的映射关系。处理 URL和函数之间关系的程序称为路由。 在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修饰的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由:

@app.route('/') def index(): return '<h1>Hello World!</h1>' 

修饰器是 Python 语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。 前例把
index() 函数注册为程序根地址的处理程序。

如果部署程序的服务器域名为 www. example.com,在浏览器中访问 http://www.example.com 后,会触发服务器执行 index() 函数。这个函数的返回值称为响应,是客户端接收到的内容。如果客户端是 Web 浏览器,响应就是显示给用户查看的文档。 像 index()这样的函数称为视图函数(view function)。视图函数返回的响应可以是包含 HTML 的简单字符串,也可以是复杂的表单,后文会介绍。 在 Python 代码中嵌入响应字符串会导致代码难以维护,此处这么做只是为了 介绍响应的概念。你将在第 3 章了解生成响应的正确方法。

如果你仔细观察日常所用服务的某些 URL 格式,会发现很多地址中都包含可变部分。例 如, 你 的 Facebook 资 料 页 面 的 地址 是http://www.facebook.com/< your-­name>, 用 户 名(your-­name)是地址的一部分。Flask 支持这种形式的 URL,只需在 route 修饰器中使用特殊的句法即可。下例定义的路由中就有一部分是动态名字:

> @app.route('/user/<name>') > def user(name):> return '<h1>Hello, %s!</h1>' % name

尖括号中的内容就是动态部分,任何能匹配静态部分的 URL都会映射到这个路由上。调用视图函数时,Flask 会将动态部分作为参数传入函数。在这个视图函数中,参数用于生成针对个人的欢迎消息。
路由中的动态部分默认使用字符串,不过也可使用类型定义。例如,路由 /user/ 只会匹配动态片段 id 为整数的 URL。Flask 支持在路由中使用 int 、 float 和 path 类型。 path类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。

3-3启动服务器

原话:

程序实例用 run 方法启动 Flask 集成的开发 Web 服务器:

if __name__ == '__main__': app.run(debug=True)

name== ’ main ’ 是 Python 的惯常用法,在这里确保直接执行这个脚本时才启动开发 Web 服务器。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行 app.run() 。服务器启动后,会进入轮询,等待并处理请求。轮询会一直运行,直到程序停止,比如按 Ctrl-C 键。 有一些选项参数可被 app.run()函数接受用于设置 Web 服务器的操作模式。在开发过程中 启用调试模式会带来一些便利,比如说激活调试器和重载程序。要想启用调试模式,我们可以把 debug 参数设为 True 。

3-4一个完整的程序

git checkout 2a

签出2a版本。
然后
这里写图片描述
浏览器打开127.0.0.1:5000就可以看到
这里写图片描述
接下来试一下添加动态路由的程序(2b版本),比对一下两次使用的代码
2a:

from flask import Flaskapp = Flask(__name__)@app.route('/')def index():return '<h1>Hello World!</h1>'if __name__ == '__main__':app.run(debug=True)

2b:

from flask import Flaskapp = Flask(__name__)@app.route('/')def index():return '<h1>Hello World!</h1>'@app.route('/user/<name>')def user(name):return '<h1>Hello, %s!</h1>' % nameif __name__ == '__main__':app.run(debug=True)

Ctrl+C退出上个程序,再运行2b版本:
这里写图片描述

原创粉丝点击