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框架的更多相关文章

  1. 教程:在 Visual Studio 中开始使用 Flask Web 框架

    教程:在 Visual Studio 中开始使用 Flask Web 框架 Flask 是一种轻量级 Web 应用程序 Python 框架,为 URL 路由和页面呈现提供基础知识. Flask 被称为 ...

  2. Ubuntu16.04采用FastCGI方式部署Flask web框架

    1    部署nginx 1.1    安装nginx服务 root@desktop:~# apt-get install nginx -y 1.2    验证nginx服务是否启动 root@des ...

  3. Python-S9-Day115——Flask Web框架基础

    01 今日内容概要 02 内容回顾 03 Flask框架:配置文件导入原理 04 Flask框架:配置文件使用 05 Flask框架:路由系统 06 Flask框架:请求和响应相关 07 示例:学生管 ...

  4. Python Flask Web 框架入门

    Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...

  5. 比我的脸还干的gan货——Python Flask Web 框架入门

    Flask是一个轻量级的基于Python的web框架. 本文适合有一定HTML.Python.网络基础的同学阅读. 1. 简介 这份文档中的代码使用 Python 3 运行.是的,所以读者需要自己在电 ...

  6. python Flask web框架

    目录: --> Flask --> 配置文件 --> 配置文件解析 --> 配置文件导入 --> 路由 --> 路由参数 --> 常用路由匹配 --> ...

  7. Flask Web开发从入门到放弃(一)

    第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...

  8. Python轻量Web框架Flask使用

    http://blog.csdn.net/jacman/article/details/49098819 目录(?)[+] Flask安装 Python开发工具EclipsePyDev准备 Flask ...

  9. Python超级明星WEB框架Flask

    Flask简介 Flask是一个相对于Django而言轻量级的Web框架. 和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug和模 ...

随机推荐

  1. Install Superset from Python3.6

    本文安装Superset大致分为以下部分: 在操作系统中安装相关依赖,我所用的操作系统为Centos6.5 安装Python3.6.6 安装Superset 详细步骤如下: 相关依赖的安装 yum i ...

  2. JQuery实现一个轮播图

    1.HTML <div class="banner"> <div class="b_main"> <div class=" ...

  3. Byword for Mac(Markdown编辑器)中文版

    还在找Markdown编辑器吗?那不妨试试Byword for Mac吧!这是一款轻量级的富文本编辑器,byword mac版提供了完整的Markdown支持,包含脚注.表格.交叉引用等功能,Bywo ...

  4. vi命令插入

    1.插入 i :在当前光标前插入 I:在当前行的行首插入 a:在当前光标后插入 A:在当前行的行尾插入 o:在当前行的下面另起一行插入 O:在当前行的上面另起一行插入 s:删除当前光标的字符并开始插入 ...

  5. ubuntu 16.04 搭建tigervnc

    主要参考 https://vitux.com/ubuntu-vnc-server/ apt install xfce4 xfce4-goodies -yapt install -y tightvncs ...

  6. hibernate框架的简单入门

    1.什么是框架 框架是一个半成品,框架帮我们实现了一部分的功能. 2.使用框架的最大好处 使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能. 3.什么是hiberbnate框架 ( ...

  7. 浅谈Linux文件与目录权限

    作为一个程序员,在工作的过程中或多或少都会接触都Linux,那么对于权限这块肯定有所了解,今天有空想谈谈觉得比较绕的权限问题,即文件权限与目录权限 1.文件权限,对于文件权限这个是比较简单的,也很容易 ...

  8. 激光三角法点云重建分享——halcon 方法

    如今视觉应用方面单纯依靠2D图像解决问题存在很多问题.稳定性差.定位不准确.还有配合机器人抓取方面只能抓高度一致的物品.其实在Halcon算法库有非常强大的三维算法.包括点云重建.激光三角法(2D相机 ...

  9. 7zip 18.3性能测试

    配置 7zip 18.3 bate3 的性能大幅提升,进行一点简单测试 配置为 E3 1230v2 3.5G 4核心/8线程 12G内存 均为8线程测试 压缩解压一个1.5G的虚拟机磁盘镜像 测试 再 ...

  10. mysql 纵表转横表

    表名:sales SELECT NAME, sum( CASE MONTH WHEN '一月份' THEN money ELSE END ) AS '一月份', sum( CASE MONTH WHE ...