Flask 入门学习
入门学习途径来源于 http://helloflask.com/tutorial/
url构建
视图函数的名字是自由定义的,和 URL 规则无关。和定义其他函数或变量一样,只需要让它表达出所要处理页面的含义即可。
除此之外,它还有一个重要的作用:作为代表某个路由的端点(endpoint),同时用来生成 URL。对于程序内的 URL,为了避免手写,Flask 提供了一个 url_for
函数来生成 URL,它接受的第一个参数就是端点值,默认为视图函数的名称:
from flask import url_for, escape
@app.route('/')
def hello():
return 'Hello'
@app.route('/user/<name>')
def user_page(name):
return 'User: %s' % escape(name)
@app.route('/test')
def test_url_for():
# 下面是一些调用示例(请在命令行窗口查看输出的 URL):
print(url_for('hello')) # 输出:/
# 注意下面两个调用是如何生成包含 URL 变量的 URL 的
print(url_for('user_page', name='greyli')) # 输出:/user/greyli
print(url_for('user_page', name='peter')) # 输出:/user/peter
print(url_for('test_url_for')) # 输出:/test
# 下面这个调用传入了多余的关键字参数,它们会被作为查询字符串附加到 URL 后面。
print(url_for('test_url_for', num=2)) # 输出:/test?num=2
return 'Test page'
templates模板传值
@app.route('/movie/')
def movie():
name = 'Marvin_z'
movies = [
{'title': 'My Neighbor Totoro', 'year': '1988'},
{'title': 'Dead Poets Society', 'year': '1989'},
{'title': 'A Perfect World', 'year': '1993'},
{'title': 'Leon', 'year': '1994'},
{'title': 'Mahjong', 'year': '1996'},
{'title': 'Swallowtail Butterfly', 'year': '1996'},
{'title': 'King of Comedy', 'year': '1999'},
{'title': 'Devils on the Doorstep', 'year': '1999'},
{'title': 'WALL-E', 'year': '2008'},
{'title': 'The Pork of Music', 'year': '2012'},
]
mydict = {
'name': 'marvin_z',
'age': 21,
'gender': 'male'
}
# return render_template('index.html', name=name, movies=movies) # flask中采用 kwargs
return render_template('index.html', **{'name': name, 'movies': movies, "mydict": mydict}) # django中模板传值采用字典的形式
<ul>
<p>hi {{ name }}</p>
{% for movie in movies %}
<li>{{ movie.title }} --- {{ movie.year }}</li>
{% endfor %}
<p>一共{{ movies|length }}条数据</p> {# movies |length 采用过滤器获取movies的长度#}
{% for k,v in mydict.items() %}
<p>{{ k }} --- {{ v }}</p>
{% endfor %}
</ul>
jinja2语法定界符
{{ ... }}
用来标记变量{% for foo in foos %}... {% endfor %}
for 循环{# ... #}
用来写注释{% if request %}... {% elif %}... {% else %}... {% endif %}
if结构
提示 访问 http://jinja.pocoo.org/docs/2.10/templates/#list-of-builtin-filters 查看所有可用的过滤器。