赞
踩
模板中的大概内容

以用户在网站中注册新账户的过程为例。用户在表单中输入电子邮件地址和密码,点击提交。于是,服务器接收到包含用户输入数据的请求,然后Flask把请求给处理注册请求的视图函数。这个视图再访问数据库,添加新用户,生成响应回送浏览器,指明操作是否成功。这两个过程分别为业务逻辑和表现逻辑。
把表现逻辑移到模板中能提升应用的可维护性。
模板是包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染,需要使用到 Jinja2 模板引擎。
<h1>Hello World</h1>
templates/user.html
<h1>Hello, {{ name }}!</h1>
app = Flask(__name__)
bootstrap = Bootstrap(app)
moment = Moment(app)
# 设置一个路由,就是处理url和函数之间(映射)关系的程序
@app.route('/')
def index():
return render_template('index.html')
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
模板中使用的 {{ name }}结构表示一个变量,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取。
Bootstrap 是一个开源web 框架。可以使用flask 的扩展。
我们使用 Flask-Bootstrap 的模板改写 templates/user.html
{% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">Flasky</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="/">Home</a></li> </ul> </div> </div> </div> {% endblock %} {% block content %} <div class="container"> <div class="page-header"> <h1>Hello, {{ name }}!</h1> </div> </div> {% endblock %}

如果在浏览器中输入无效的路由,我们应该返回错误页面
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
<!-- 包含导航栏的应用基模板--> {% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">Flasky</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="/">Home</a></li> </ul> </div> </div> </div> {% endblock %} {% block content %} <div class="container"> <div class="page-header"> {% block page_content %}{% endblock %} </div> </div> {% endblock %}
{% extends "base.html" %}
{% block title %}Flasky - Page Not Found{% endblock %}
{% block page_content %}
<div class="container">
<h1>Not Found</h1>
</div>
{% endblock %}
它就会在 page_content内容中显示 Not Found
对于包含可变部分的动态路由,在模板中构建正确的URL很困难。因此,Flask 提供了 url_for() 函数,它使用应用的URL映射中保存的信息生成URL。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。