使用Flask快速搭建前端

使用Flask快速搭建前端

Flask介绍

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。
Flask也被成为『微框架』。因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
它的官方地址:http://flask.pocoo.org

简单的Hello world

在一个python文件hello.py中键入以下代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

执行命令
python hello.py

运行结果
运行结果

在浏览器访问 http://127.0.0.1:5000
显示如下
浏览器显示

more

路由配置

flask的路由是由route()装饰器把一个函数绑定到一个URL实现的。
下面是一些基本的例子:

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello World'

当然一个web框架的路由肯定不可能只做到这些简单固定的路由,flask自己可以定义一些规则。

变量规则

通过把 URL 的一部分标记为 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 ,可以 选择性的加上一个转换器,为变量指定规则。请看下面的例子:

@app.route('/user/')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username

@app.route('/post/')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

现有的转换器有:

int float path
接受整数 接受浮点数 和缺省情况相同,但也接受斜杠

简单介绍到这里,更多规则可以看官方文档,地址是 http://werkzeug.pocoo.org/docs/0.11/routing/

渲染模板

在Python内部生成HTML不好玩,且相当笨拙。因为你必须自己负责HTML转义,以确保应用的安全。因此, Flask自动为你配置的 Jinja2 模板引擎,就像Java语言里最简单的模板JSP一样。

Flask使用render_template()方法渲染模板,我们要做的只要提供模板名称和需要的参数或者说变量就行了。
举个栗子:

from flask import render_template

@app.route('/hello/')
@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html', name=name)

Flask一般会在templates文件夹内寻找名称对应的模板文件。

接下来就要看看Jinja2模板的威力了,就像使用Java语言或者PHP里的html模板标签语言。

举个简单使用Jinja2模板的栗子:(hello.html)


<title>Hello from Flasktitle>
{% if name %}
  <h1>Hello {{ name }}!h1>
{% else %}
  <h1>Hello World!h1>
{% endif %}

是不是很像PHP?哈哈,以前用过PHP或者JSTL的,这模板已经是简单得不能再简单。
在模板内部你也可以访问 request 、session 和 g 对象,以及 get_flashed_messages() 函数。

这几个对象和函数都可以在官方API文档中查找得到,这里不细说。

总结

Flask真的是一个超快速开发web的框架,配合bootstrap使用快到没朋友。Flask官方文档中的quick start已经能覆盖到我的功能需求,非常容易学。我经常用它来做一些数据项目的前端展示或者一些数据检索展示,但如果要做一个大型网站的话,这个框架恐怕不太适合,目前我还没看到它的一些关于并发的支持。做大型网站我还是会选择传统的Java语言,因为比较容易找到人手。

你可能感兴趣的:(python,模板引擎,框架,web)