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. KeepAlive安装指南

    https://blog.csdn.net/yelllowcong/article/details/78764780

  2. SecureCRT连接linux步骤

    SecureCRT连接linux步骤  做个笔记,以免隔段时间后忘了 LINUX系统一般都是用来作服务器使用,而且都是通过命令行来操作,为了操作方便我们都会使用第三方软件来远程操作.CRT就是比较常用 ...

  3. CDI services--Decorators(装饰器)

    1.Decorators装饰器综述 拦截器是一种强大的方法在应用程序捕捉运行方法和解耦.拦截器可以拦截任何java类型的调用. 这使得拦截器适合解决事务管理,安全性,以及日记记录. 本质上说,拦截器并 ...

  4. Pocket Gem OA: Path Finder

    1. 有向图 找所有start node到end node之间的路径 输入是一个txt 形式如下: A E A : B C D. B : C C : E D : B. 输出一个List<Stri ...

  5. unity组件路径自动生成

    unity 有时候找路径太麻烦 写了一个自动生成脚本的工具 using System.Collections.Generic; using System.IO; using System.Text; ...

  6. Debian setup the time

    sudo gedit /etc/default/hwclock将 井HWCLOCKACCESS=yes 和 井HCTOSYS_DEVICE=rtc0 前的 井 符号去掉,再改 rtc0 为 rtc1 ...

  7. Easyui form提交后input清空的方法

    先上解决办法: $(#formid #inputid).val("") 将这个代码放在提交按钮最后就可以了. 我在做一个修改信息的功能时,发现上一次提交的内容在下一次打开的记录里又 ...

  8. lock 单例模式

    单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等 网站的计数器,一般也是采用单例模式实现,否则难以同步 单例模式要素 ...

  9. spring boot + vue + element-ui全栈开发入门——前端编辑数据对话框

     需求 1.点击“添加”按钮,弹出录入数据的对话框窗口,并录入数据,如果数据有误则不允许提交.数据填写完毕后,点击“保存”按钮,调用http协议提交数据,提交完毕刷新页面数据.点击“取消”按钮关闭对话 ...

  10. C# 链表去重 List 一维 二维 分别使用 Distinct() GroupBy() 方法

    分别使用List中Distinct(),GroupBy()实现链表的去重. 1.先上效果: 一维链表中分别有元素“aa”,"bb",'aa','aa',"cc" ...