您的位置:首页 > Web前端

使用Flask快速搭建前端

2016-11-01 10:33 232 查看

使用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/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username

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


现有的转换器有:

intfloatpath
接受整数接受浮点数和缺省情况相同,但也接受斜杠
简单介绍到这里,更多规则可以看官方文档,地址是 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/<name>')
def hello(name=None):
return render_template('hello.html', name=name)


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

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

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

<!doctype html>
<title>Hello from Flask</title>
{% 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 模板引擎 框架