Flask Web框架
Flask依赖两个外部库:Werkzeug和Jinja2。Werkzeug是一个WSGI(在Web应用和多种服务器之间的标准Python接口)工具集;Jinja2负责渲染模板。所以在安装Flask之前,需要安装这两个外部库。
安装虚拟环境
1、安装Virtualenv
最好在命令行中安装
virtualenv --version 可以查看版本
2、创建虚拟环境
接下来使用virtualenv命令在当前文件夹中创建Python虚拟环境。这个命令只有一个必需的参数,即虚拟环境的名字。创建虚拟环境后,当前文件夹中会出现一个子文件夹,与虚拟环境相关的文件都保存在这个子文件夹中。一般,虚拟环境会被命名为venv
运行完成后,在运行的目录下,会新增一个venv文件夹,它保存全新的虚拟环境,其中有一个私有的Python解释器。
3、激活虚拟环境
venv\Scripts\activate
安装Flask
pip install flask
安装成功后,可通过 pip list --format columns 查看所有安装包
第一个Flask程序
from flask import Flask #导入flask
app=Flask(__name__) #创建Flask对象
@app.route('/')
def hell_world():
return 'hello world!'
if __name__ == '__main__':
app.run()

输入上面的网址,发现hello world显示出来了
那么,这段代码做了什么?
首先,我们导入了Flask类。这个类的实例将会是我们的WSGI应用程序
接下来,我们创建一个该类的实例,第一个参数是应用模块或包的名称。如果你使用单一的模块,应该使用__name__,因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同(也就是__main__或实际的导入名)。这是必须的,这样Flask才知道到哪去找模块、静态文件等等。详见Flask文档
然后,我们使用route()装饰器告诉Flask什么样的URL能触发我们的函数。
这个函数的名字也在生成URL时被特定的函数采用,这个函数返回我们想要显示在用户浏览器中的信息。
最后我们用run()函数来让应用运行在本地服务器上。main保证该脚本被Python解释器直接执行的时候才会运行,而不是作为模块导入的时候。
开启调试模式
虽然run()方法适用于启动本地的开发服务器,但是每次修改代码后都要手动重启它。这样并不够优雅。有两种途径来启动调试模式:
一种是直接在应用对象上设置:
app.debug=True
app.run()
另一种是作为run方法的一个参数传入:
app.run(debug=True)
路由
客户端(如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行了哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序为路由。
在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。
修饰器是python语言的标准特性,可以使用不同的方式修改函数的行为。通常用法是使用修饰器把函数注册为事件的处理程序。
你也可以构造含动态部分的URL,也可以在一个函数上附着多个规则
1、变量规则
要给URL添加变量部分,你可以把这些特殊字段标记为<variable_name>,这个部分将会作为命名参数传递到你的函数。规则可以用<converter:variable_name>指定一个可选的转换器。
示例
from flask import Flask #导入flask
app=Flask(__name__) #创建Flask对象
@app.route('/')
def hell_world():
return 'hello world!'
@app.route('/user/<username>')
def show_user_profile(username):
#显示该用户名的用户信息
return 'User %s'%username
@app.route('/post/<int:post_id>')
def show_post(post_id):
#根据id显示文章,id是整型数据
return 'Post %d'%post_id
if __name__ == '__main__':
app.run(debug=True)
上述代码中使用了转换器。它有下面几种:
int 接受整数
float 接受浮点数
path 默认。但也接受斜线
运行文件,在浏览器中将地址修改为“http://127.0.0.1:5000/user/张三”,查看展示效果
输入“http://127.0.0.1:5000/post/2”
2、构造URL
如果Flask能匹配URL,那么Flask能生成它们吗?你可以用url_for()来给指定的函数构造URL。它接受函数名作为第一个参数,也接受对应URL规则的变量部分的命名参数。未知变量部分会添加到URL末尾作为查询参数。
from flask import Flask,url_for
app=Flask(__name__)
@app.route('/url/')
def get_url():
#根据id显示文章,id是整型数据
return url_for('show_post',post_id=2)
if __name__ == '__main__':
app.run(debug=True)
3、HTTP方法
HTTP(与web应用会话的协议)有许多不同的访问URL方法。默认情况下,路由只回应GET请求,但是通过route()装饰器传递methods参数可以改变这个行为。
静态文件
动态Web应用也会需要静态文件,通常是CSS和JavaScript文件。理想状况下,你已经配置好Web服务器来提供静态文件,但在开发中,Flask也可以做到。只要在你的包中或是模板所在目录中创建一个名为static的文件夹,在应用中使用“/static”即可访问
给静态文件生成URL,使用特殊的“static”端点名
url_for('static',filename='hello.html')
模板
模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模板,Flask使用了Jinja2的强大模板引擎。
1、渲染模板
默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板。
Flask提供的render_template()函数把Jinja2模板引擎集成到了程序中。第一个参数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。在这段代码中,第二个模板收到一个名为name的变量。
Flask Web框架的更多相关文章
- 教程:在 Visual Studio 中开始使用 Flask Web 框架
教程:在 Visual Studio 中开始使用 Flask Web 框架 Flask 是一种轻量级 Web 应用程序 Python 框架,为 URL 路由和页面呈现提供基础知识. Flask 被称为 ...
- Ubuntu16.04采用FastCGI方式部署Flask web框架
1 部署nginx 1.1 安装nginx服务 root@desktop:~# apt-get install nginx -y 1.2 验证nginx服务是否启动 root@des ...
- Python-S9-Day115——Flask Web框架基础
01 今日内容概要 02 内容回顾 03 Flask框架:配置文件导入原理 04 Flask框架:配置文件使用 05 Flask框架:路由系统 06 Flask框架:请求和响应相关 07 示例:学生管 ...
- Python Flask Web 框架入门
Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...
- 比我的脸还干的gan货——Python Flask Web 框架入门
Flask是一个轻量级的基于Python的web框架. 本文适合有一定HTML.Python.网络基础的同学阅读. 1. 简介 这份文档中的代码使用 Python 3 运行.是的,所以读者需要自己在电 ...
- python Flask web框架
目录: --> Flask --> 配置文件 --> 配置文件解析 --> 配置文件导入 --> 路由 --> 路由参数 --> 常用路由匹配 --> ...
- Flask Web开发从入门到放弃(一)
第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...
- Python轻量Web框架Flask使用
http://blog.csdn.net/jacman/article/details/49098819 目录(?)[+] Flask安装 Python开发工具EclipsePyDev准备 Flask ...
- Python超级明星WEB框架Flask
Flask简介 Flask是一个相对于Django而言轻量级的Web框架. 和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug和模 ...
随机推荐
- 尽量避免把弹窗加在window上,可以考虑把弹窗封装到控制器里面
封装自定义弹窗,一般来说有两种选择: 在[[[UIApplication sharedApplication] delegate] window]上add自定义view: present一个模态Con ...
- DDoS攻击流量检测方法
检测分类 1)误用检测 误用检测主要是根据已知的攻击特征直接检测入侵行为.首先对异常信息源建模分析提取特征向量,根据特征设计针对性的特征检测算法,若新数据样本检测出相应的特征值,则发布预警或进行反应. ...
- list的基本操作实现
有关list的相关实现,主函数没有写很多,每个部分目前没发现有问题: #include <iostream> #include <stdio.h> using namespac ...
- 在Vuex更新,组件内的视图更新问题
由于js的限制,vue无法进行监听数组; 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如: vm.items.len ...
- SQL两表之间:根据一个表的字段更新另一个表的字段
update table1 set field1=table2.field1,field2=table2.field2from table2where table1.id=table2.id
- 设置光标聚焦输入框(EditText)并弹出软键盘(在适配器中设置)
参考代码: public void setFocusEditTextAndShowSoftInput(final EditText editText){ editText.setFocusable(t ...
- Django系统
#Django系统 -环境 - python3.6 - django1.8 -参考资料 - [django中文教程](http://python.usyiyi.cn) - django架站的16堂课 ...
- 解决git pull/push每次都需要输入密码问题 和 HttpRequestException encountered
如果我们git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁 ...
- 3.2.1 SpringMVC入门
一. SpringMVC入门 1. MVC介绍 MVC全名 是Model View Controller, 是模型(model) - 视图(view) - 控制器(controller) 的缩写, 它 ...
- ubuntu 16.04 搭建tigervnc
主要参考 https://vitux.com/ubuntu-vnc-server/ apt install xfce4 xfce4-goodies -yapt install -y tightvncs ...