Flask 介绍
知识点
- 微框架、WSGI、模板引擎概念
- 使用 Flask 作 web 应用
- 模板的使用
- 根据 URL 返回特定网页
实验步骤
1. 什么是 Flask?
Flask 是一个 web 框架。也就是说 Flask 为你提供工具,库和技术来容许你构建一个 web 应用程序。这个 wdb 应用程序可使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。javascript
Flask 属于微框架(micro-framework)这一类别,微架构一般是很小的不依赖于外部库的框架。这既有优势也有缺点,优势是框架很轻量,更新时依赖少,而且专一安全方面的 bug,缺点是,你不得不本身作更多的工做,或经过添加插件增长本身的依赖列表。Flask 的依赖以下:css
维基百科 WSGI 的介绍:html
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口)。自从WSGI被开发出来之后,许多其它语言中也出现了相似接口。java
2. 什么是模板引擎?
你搭建过一个网站吗?你面对过保持网站风格一致的问题吗,你不得不写屡次相同的文本吗?你有没有试图改变这种网站的风格?python
若是你的网站只包含几个网页,改变网站风格会花费你一些时间,这确实可行。尽管如此,若是你有许多页面(好比在你商店里的售卖物品列表),这个任务便很艰巨。web
使用模板你能够设置你的页面的基本布局,并说起哪一个元素将发生变化。这种方式能够定义您的网页头部并在您的网站的全部页面使它保持一致,若是你须要改变网页头部,你只须要更新一个地方。flask
使用模板引擎建立/更新/维护你的应用会节约你不少时间。vim
3. "Hello World" 应用
咱们将使用 flask 完成一个很是基础的应用。安全
- 安装 flask
$ sudo pip3 install flask
- 建立项目结构
$ mkdir -p hello_flask/{templates,static}
这是你的 web 应用的基本结构:bash
$ tree hello_flask/ hello_flask |-- static `-- templates 2 directories, 0 files
templates
文件夹是存放模板的地方,static
文件夹存放 web 应用所需的静态文件(images, css, javascript)。
- 建立应用文件
$ cd hello_flask $ vim hello_flask.py
hello_flask.py 文件里编写以下代码:
#!/usr/bin/env python import flask # Create the application. APP = flask.Flask(__name__) @APP.route('/') def index(): """ 显示可在 '/' 访问的 index 页面 """ return flask.render_template('index.html') if __name__ == '__main__': APP.debug=True APP.run()
- 建立模板文件
index.html
$ vim templates/index.html
index.html 文件内容以下:
<!DOCTYPE html> <html lang='en'> <head> <meta charset="utf-8" /> <title>Hello world!</title> <link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='hello.css')}}" /> </head> <body> It works! </body> </html>
- 运行 flask 应用程序
$ python3 hello_flask.py
访问 http://127.0.0.1:5000/,这应该只是显示黑字白底的 "It works!" 文本,以下图:
4. Flask 中使用参数
在本节中咱们将要看到如何根据用户使用的 URL 返回网页。
为此咱们更新 hello_flask.py 文件。
- 在 hello_flask.py 文件中添加如下条目
@APP.route('/hello/<name>/') def hello(name): """ Displays the page greats who ever comes to visit it. """ return flask.render_template('hello.html', name=name)
- 建立下面这个模板 hello.html
<!DOCTYPE html> <html lang='en'> <head> <meta charset="utf-8" /> <title>Hello</title> <link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='hello.css')}}" /> </head> <body> Hello {{name}} </body> </html>
- 运行 flask 应用
$ python3 hello_flask.py
访问 http://127.0.0.1:5000/ ,这应该只是显示黑字白底的 "It works!" 文本。
访问http://127.0.0.1:5000/hello/you,这应该返回文本 "Hello you",见下图:
不管你在 URL 中 /hello/
后填写的什么,都会出如今返回的网页中。
这是你第一次使用模板,咱们在 hello_flask.py 中创建了 name
变量(参见 hello 函数的 return 行)。经过语法 {{name}}
,name 变量以后在页面中显示其自身。
5. 额外工做
5.1. 使用模板
目前,对于每个页面咱们都建立了一个模板,其实这是很差的作法,咱们应该作的是建立一个主模板而且在每一个页面使用它。
- 建立模板文件 master.html。
<!DOCTYPE html> <html lang='en'> <head> <meta charset="utf-8" /> <title>{% block title %}{% endblock %} - Hello Flask!</title> <link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='hello.css')}}" /> </head> <body> {% block body %}{% endblock %} </body> </html>
- 调整模板 index.html。
{% extends "master.html" %} {% block title %}Home{% endblock %} {% block body %} It works! {% endblock %}
正如你所看到的,在 master.html 模板中咱们定义了两部分,名为 title
和 body
的 blocks
。
在模板 index.html 中,咱们声明这个模板扩展自 master.html 模板,而后咱们定义了内容来放在这两个部分中(blocks)。在第一个 block title
中,咱们放置了 Home
单词,在第二个 block body
中咱们定义了咱们想要在页面的 body 中有的东西。
- 做为练习,更改其余模板 hello.html,一样要使用 master.html。
- 在 hello 页面添加首页连接。
调整模板 hello.html,添加到首页的连接。
<a href="{{ url_for('index') }}"><button>Home</button></a>
- 做为你的任务,在首页添加到 hello 页面的连接。
总结
本实验中咱们了解了微框架、WSGI、模板引擎等概念,学习使用 Flask 作一个 web 应用,在这个 web 应用中,咱们使用了模板。而用户以正确的不一样 URL访问服务器时,服务器返回不一样的网页。最后还给你们留了一个小任务,但愿你们能完成。
这里只介绍了 Flask 不多的一部分,有兴趣的能够学习 Flask 的官方文档。