python的Flask 介绍

Flask 介绍

知识点

  • 微框架、WSGI、模板引擎概念
  • 使用 Flask 做 web 应用
  • 模板的使用
  • 根据 URL 返回特定网页

实验步骤

1. 什么是 Flask?

Flask 是一个 web 框架。也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 wdb 应用程序可以使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。

Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架。这既有优点也有缺点,优点是框架很轻量,更新时依赖少,并且专注安全方面的 bug,缺点是,你不得不自己做更多的工作,或通过添加插件增加自己的依赖列表。Flask 的依赖如下:

维基百科 WSGI 的介绍:

Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器Web应用程序框架之间的一种简单而通用的接口)。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。

2. 什么是模板引擎?

你搭建过一个网站吗?你面对过保持网站风格一致的问题吗,你不得不写多次相同的文本吗?你有没有试图改变这种网站的风格?

如果你的网站只包含几个网页,改变网站风格会花费你一些时间,这确实可行。尽管如此,如果你有许多页面(比如在你商店里的售卖物品列表),这个任务便很艰巨。

使用模板你可以设置你的页面的基本布局,并提及哪个元素将发生变化。这种方式可以定义您的网页头部并在您的网站的所有页面使它保持一致,如果你需要改变网页头部,你只需要更新一个地方。

使用模板引擎创建/更新/维护你的应用会节约你很多时间。

3. "Hello World" 应用

我们将使用 flask 完成一个非常基础的应用。

  • 安装 flask
$ sudo pip3 install flask
  • 创建项目结构
$ mkdir -p hello_flask/{templates,static}

这是你的 web 应用的基本结构:

$ 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 的官方文档

时间: 2024-10-17 07:13:46

python的Flask 介绍的相关文章

Python的Flask框架入门-Ubuntu

全文请见tuts code:An Introduction to Python's Flask Framework Flask是Python一个小而强大的web框架.学起来简单,用起来也容易,能够帮你在很短的时间内创建web应用. 这篇文章中,我们会创建一个简单的web应用,包含两个静态页面和少许动态内容.尽管Flask能够被用来创建大型的,数据库驱动的网站,但是作为开始,通过静态页面来介绍它的工作流程会更有帮助.在了解了流程之后,我们就可以做出更为复杂的页面.读完本文章,你应该能够用这里的步骤

基于Sae和Python的flask实现的金山快盘自动签到

第一次写博客园,各位大大请多加照顾哦. 进入正题 功能介绍 架到Sae后,每天定点Sae的服务器就会帮你自动签到金山快盘和自动转盘抽奖.一些记录如下: 金山快盘的签到记录: Sae的Cron的日记: 核心代码 本来想写抓包的过程的,但是感觉很小儿科(如果大家觉得有需要,我再写上来),就不献丑了,直接po上代码. 1 #!/usr/bin/python 2 #-*-coding:utf-8-*- 3 import urllib, urllib2, cookielib, sys 4 5 class

怎么使用Python和Flask在Linux上创建应用

无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会,也是一个从零基础开始学习python开发(http://www.maiziedu.com/course/python/)的一个好机会,pyhon学起来很有趣且在实际的应用如yum包管理器中很有用. 给大家分享一个关于很赞的教程贴,本篇教程会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函

[Python] 运行Flask, 报错:UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc4 in position 33: ordinal not in range(128)

运行时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) Python2.7在Windows上一个bug!!! 解决方法: 参考官方patch: http://bugs.python.org/file19332/9291a.patch 如下代码:一,加入from itertools import count: 二,修改 def enum_type

python的bif介绍

Python是面向对象的解释性程序设计语言,Python的语法简洁,特点是用空白符作为语句缩进. BIF(bulit in function)内置函数,就是Python自身提供的函数功能,编程者直接使用即可,在Python或IDLE Shell中使用  dir(__builtins__)  命令查看Python的内置函数. 1 ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOE

python 常库介绍及安装方法

文大赛,秀绝招,赢无人机! python 常库介绍及安装方法 标签: PYTHON库 2016-10-13 15:32 798人阅读 评论(0) 收藏 举报  分类: 其他(33)  bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包My

使用python的Flask实现一个RESTful API服务器端[翻译]

最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文将会使用python的Flask框架轻松实现一个RESTful的服务. REST的六个特性: Client-Server:服务器端与客户端分离. Stateless(无状态):每次客户端请求必需包含完整的信息,换句话说,每一次请求都是独立的. Cacheable(可缓存):服务器端必需指定哪些请求是可以缓存的. Layered System(分层结构):服务器端与客

Python 手册——Python的非正式介绍

在后面的例子中,区分输入和输出的方法是看是否有提示符(“>>> ”和“.. ”):想要重复这些例子的话,你就要在提示符显示后输入所有的一切:没有以提示符开始的行,是解释器输出的信息.需要注意的是示例中的 从属提示符用于多行命令的结束,它表示你需要输入一个空行. 本手册中的很多示例都包括注释,甚至有一些在交互提示符中折行.Python中的注释以符号“#”起始,一直到 当前行的结尾.注释可能出现在一行的开始,也可能跟在空格或程序代码之后,但不会出现在字符串中,字符 串中的#号只代表#号. 示

基于Python的Flask的开发实战(第一节Flask安装)

1.安装python虚拟环境 easy_install virtualenv easy_install pip cd /home/admin virtualenv flask-website source flask-website/bin/activate#进入虚拟环境 deactivate#退出虚拟环境 2.安装flask及依赖包 pip install flask (flask-website)$python >>>import flask >>> #正常没报错,