何为模板(jinja模板引擎)
对于一个工程来说,将其划分为事务逻辑与表现逻辑,将表现逻辑(主要是html)移到模板,提高程序的维护性。
视图处理函数通过render_template()跳转到模板,或传入字符串信息(视图函数中通过url路径给name赋值,在模板中变量用{{ }})
#视图处理函数
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
#跳转模板内容
<h1>Hello, {{ name }}!</h1>
模板的控制语句
if语句
{% if name %}
Hello, {{ name }}!
{% else %}
Hello, Stanger!
{% endif %}
for语句
视图函数
@app.route('/')
def index():
comit = ["asdf","sadf","rtrt"]
return render_template('index.html',commits = comit)
模板 (注commits为视图函数render_template('index.html',commits = comit)中的参数)
<ul>
{% for i in commits %}
<li> {{i }}</li>
{% endfor %}
</ul>
效果图
基础模板案例
base.html
{% extends "bootstrap/base.html" %}
{% block title %}Flasky{% endblock %}
{% block head %}
{{ super() }}
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
{% 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">
{% block page_content %}{% endblock %}
</div>
{% endblock %}
index.html(主要继承{{%block content% }}界面的内容的 )
{% extends "base.html" %}
{% block title %}Flasky{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Hello World!</h1>
</div>
{% endblock %}
链接(反向的路由解析)
url_for(‘index’)#根据函数名找到url路径,主要用于<a href =" ">
flask_Moment本地化日期和时间
#视图函数
moment = Moment(app)
@app.route('/')
def index():
return render_template('index.html',
current_time=datetime.utcnow())
{% block page_content %}
<p>The local date and time is {{ moment(current_time).format('LLL') }}.</p>
<p>That was {{ moment(current_time).fromNow(refresh=True) }}.</p>
{% endblock %}
注:format(‘LLL’)根据客户端电脑时区和区域渲染日期和时间,LLL代表复杂度
fromNow()渲染相对时间