模板放在‘templates’文件夹下。
从‘flask’中导入‘render_template’函数。
from flask import Flask , render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html',username = 'noah')
<body>
就像下面这样:
<p>用户名:{{ username }}p>
<p>年龄:{{ age }}p>
<p>性别:{{ gender }}p>
<hr>#hr是分割线
<p>用户名:{{ person.name }}p>
<p>用户名:{{ person.age }}p>
<hr>
<p>百度:{{ websites.baidu }}p>
<p>谷歌:{{ websites.google }}p>
body>
from flask import Flask , render_template
app = Flask(__name__)
@app.route('/')
def index():
context={
'username' : 'noah',
'age' : '19',
'gender' : 'male'
'person' : p,
'websites' : {
'baidu': 'www.baidu.com',
'google': 'www.google.com'
}
}
#直接写名字,不用写templates文件夹的名字,Flask会自动去这个文件夹寻找
return render_template('index.html',**context)
HTML中语法
{% if xxx %}
{% eles %}
{% endif %}
*if的使用和python相差无几
HTML中语法
遍历字典:
*和python相差无几
可以使用
keys(),items(),values(),iteritems(),iterkeys(),itervalues()
{% for k,v in user.items() %}
{{ k }}:{{ v }}
{% endfor %}
遍历列表也一样:
{% for website in websites %}
{{ website }}
{% endfor %}
一个小案例,渲染四大名著给前端,然后前端用表格显示:
{# HTML内代码 #}
<table>{# Table 表格 #}
<thead>{# Tablehead 表头 #}
<th>书名th>{# 表头1 #}
<th>作者th>{# 表头2 #}
<th>价格th>{# 表头3 #}
thead>
<tbody>
{% for book in books %}{# Tablebody 对应内容 #}
<tr>
<td>{{ book.name }}td>{# 数据1 #}
<td>{{ book.author }}td>{# 数据2 #}
<td>{{ book.price }}td>{# 数据3 #}
tr>
#Flash内代码
def index():
books =[{ #生成List,List内有Dict
'name' : '西游记',
'author' : '吴承恩',
'price':109,
},
{ 'name' : '红楼梦',
'author' : '曹雪芹',
'price':200,
},{
'name': '三国演义',
'author': '罗贯中',
'price': 99,
},{
'name': '水浒传',
'author': '施耐庵',
'price': 150,
}]
return render_template('index.html',books=books)
{{avatar| default('xx默认值xx')| length}}
常用过滤器:
1、default:如果当前变量不存在则使用默认值。
2、length:求List或者Dict或者字符串或者元组的长度。
继承的作用:可以把一些公共的代码放在公共模板中,避免写重复的代码。
继承的实现:
{% extends 'basic.html' %}
{#这样就会把'basic.html'完全复制过来#}
block的实现:
{#在父模板中设置block#}
{% block main %}{% endblock %}
{% block head %}{% endblock %}
{% block title %}{% endblock %}
{#在字模板中输入同样的内容,并且把要加入的内容写进去#}
{% block main %}内容{% endblock %}
{% block head %}样式{% endblock %}
{% block title %}标题{% endblock %}
block的作用: 可以让子模板实现一些自己的需求,父模板必须提前定义好。当然内容一定要写在block内。
作用:使用url_for(‘视图函数名称’)可以反转成url地址
1、语法:url_for(‘static’,filename=‘路径’)。
2、加载静态文件:Flask会从static开始寻找,不用再写static路径。
3、可以加载css文件,js文件,image文件。
{#CSS#}
<link rel="stylesheet" href="{{url_for('static',filename='css/index.css') }}">
{#JavaScript#}
<script src="{{ url_for('static',filename='js/index.js') }}">script>
{#Image#}
<img src="{{ url_for('static',filename='images/LOGO.jpeg') }}" alt="">