@app.route('/')
def index():
return render_template('index.html')(1)如果只有一个或者少量参数,直接在render_template函数中添加关键字参数就可以了。
(2)如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在render_template中, 使用两个星号,把字典转换成关键参数传递进去,这样的代码更方便管理和使用。
在HTML文件中
{{ params }}<p>你好:{{ username }}</p>selfprojectName.py中:@app.route('/')
def index():
return render_template('index.html',username='你好') # 模板文件中只有一个变量,直接把参数传进去(1)如果只有一个或者少量参数,直接在render_template函数中添加关键字参数就可以了。
(2)如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在render_template中,使用两个星号,把字典转换成关键参数传递进去,这样的代码更方便管理和使用。
index.html中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>这是一个模板文件</p>
<p>用户名:{{ username }}</p>
<p>年龄:{{ age }}</p>
<p>性别:{{ gender }}</p>
</body>
</html>selfprojectName.py中:from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
context = {
'username' : '站长',
'age' : '18',
'gender' : '男'
}
return render_template('index.html' , **context) # 定义一个字典,双星号把字典转换成关键参数传递进去
if __name__ == '__main__':
app.run(debug=True)访问模型中的属性或者是字典,可以通过{{params.property}}的形式,或者是使用{{params['age']}}
index.html中:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>这是一个模板文件</p>
<p>用户名:{{ username }}</p>
<p>年龄:{{ age }}</p>
<p>性别:{{ gender }}</p>
<hr>
<p>访问模型(类)</p>
<p>用户名:{{ person['name'] }}</p>
<p>年龄:{{ person.age }}</p>
<hr>
<p>访问字典</p>
<p>百度:{{ websites.baidu }}</p>
<p>谷歌:{{ websites.google }}</p>
</body>
</html>selfprojectName.py中:from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
# 定义一个类
class Person(object):
name = '老头'
age = 22
p = Person() # 实例化对象
context = {
'username' : '站长',
'age' : '18',
'gender' : '男',
'person' : p, # 把模型对象作为参数传进去
# 将一个字典嵌套传参数进去
'websites' : {
'baidu' : 'www.baidu.com',
'google' : 'www.google.com'
}
}
return render_template('index.html' , **context) # 定义一个字典,双星号把字典转换成关键参数传递进去
if __name__ == '__main__':
app.run(debug=True)过滤器简单理解:
例如:过滤器的作用就是,如果有头像就显示头像,没有头像就显示默认的头像(无头像)
过滤器的作用对象是变量
{{ avatar|default('xxx') }}实例一(没有过滤器):
selfprojectName.py中:#encoding: utf-8
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', avatar='http://avatar.csdn.net/9/0/4/3_ly123963.jpg')
if __name__ == '__main__':
app.run(debug=True)index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>过滤器模板文件</p>
<img src="{{ avatar }}">
</body>
</html>实例二(加上过滤器):
selfprojectName.py中:from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html') # 后端不上传图片,前端将加载默认的图片
if __name__ == '__main__':
app.run(debug=True)前端加上过滤器之后。 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>过滤器模板文件</p>
<img src="{{ avatar | default('http://noavatar.csdn.net/B/3/F/3_lighting_miaoxingren.jpg') }}">
</body>
</html> length过滤器主要用于求列表或者字符串或者字典或者元组的长度。比如统计一篇文章评论的总数,一般都是使用过滤器完成的。
实例: selfprojectName.py中:from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
# 定义一个评论列表
comments = [
{
'user' : '站长',
'content' : u'xxxxxxxxxxxx'
},
{
'user' : '你猜',
'content' : u'yxyxyxyxyxy'
},
{
'user' : '船长杰克',
'content' : u'tttttttmtmtmtmtd'
}
]
return render_template('index.html',comments=comments)
if __name__ == '__main__':
app.run(debug=True)index.html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>过滤器模板文件</p>
<hr>
<p>评论数:({{ comments|length }})</p>
<ul>
{% for comment in comments %}
<li>
<a href="#">{{ comment.user }}</a>
<p href="#">{{ comment.content }}</p>
</li>
{% endfor %}
</ul>
</body>
</html>{{ "%s" - "%s"|format('Hello?',"Foo!") }}将输出:Helloo? - Foo!(1)语法
{% if xxx %}
{% else %}
{% endif %}selfprojectName.py中:@app.route('/')
def index():
# 定义一个字典
user = {
'username' : u'站长',
'age' : 22
}
return render_template('index.html',user=user)index.html中
{% for k,v in user.items() %}
<p>{{ k }}:{{ v }}</p>
{% endfor %} 语法和python一样,可以使用items()、keys()、values()、iteritems()、iterkeys()、itervalues()
selfprojectName.py中:# for遍历列表
@app.route('/')
def index():
websites = ['www.baidu.com','www.google.com'] # 定义一个列表
return render_template('index.html',websites=websites)index.html中
{% for website in websites %}
<p>{{ website }}</p>
{% endfor %}(1)作用:可以把一些公共的代码放在父模板中,避免写重复的代码
父模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
{% block head %}{% endblock %}
</head>
<div>
<h1>其他照旧</h1>
</div>
{% block MainContainer %}{% endblock %}
<body>
</body>
</html>子模板:
{% extends 'base.html %}
{% block title %}
名字
{% endblock %}
{% block head %}
<style>
不同的风格文件
</style>
<link rel="stylesheet" href="">
<script>不同的脚本文件</script>
{% endblock %}
{% block MainContainer %}
<h1>这里是写具体内容的地方</h1>
{% endblock %}selfprojectName.py中:from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login')
def login():
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.nav-header {
background: #3a3a3a;
height: 65px;
}
ul{
overflow: hidden;
}
ul li{
float: left;
list-style: none;
padding: 0 10px;
line-height: 65px;
}
ul li a{
color: #ffffff;
}
</style>
</head>
<body>
<div class="nav-header">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">论坛</a> </li>
</ul>
</div>
{% block MainContainer %}{% endblock %}
</body>
</html>index.html 中
使用这个模板之后,所有的代码必须写到block里面去!
{% extends 'base.html' %}
{% block MainContainer %}
<p>这里是首页</p>
{% endblock %}login.html中
{% extends 'base.html' %}
{% block MainContainer %}
<p>这里是注册页面</p>
{% endblock %}通用语法:
url_for('static',filename='路径') 视图函数中:@app.route('/login/)
def login_function():
return render_template('login.html')方法一: html文件里面
<a href="/login/">点击我</a>方法二(推荐):
html文件里面
<a href="{{ url_for('login_function') }}">点击我</a>方法一:
html文件里面
<link rel="stylesheet" href="static/css/index.css">方法二(推荐):
html文件里面
<link rel="stylesheet" href="{{ url_for('static',filename=''css/index.css) }}">加载图片方法(推荐):
html文件里面:
<img src="{{ url_for('static',filename='images/logo.png') }}">加载Js文件方法(推荐):
html文件里面:
<script src="{{ url_for('static',filename='js/index.js') }}">