Flask学习系列7.3—jinja控制语句与表达式

flask的模板功能都是有jinja2实现的,html文件要放在template中。
注意:文件名不能更改,只能用这个。

 模板的表达式都是包含在分隔符”{{ }}”内的;控制语句都是包含在分隔符”{% %}”内的
 另外,模板也支持注释,都是包含在分隔符”{# #}”内,支持块注释。

main.py

from flask import Flask, render_template
 
app = Flask(__name__)
 

@app.route('/index')
def index():
	name = 5
    return render_template('hello.html', name=name)
 
 
if __name__ == '__main__':
    app.run(debug=True)

hello.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
	<h1> {{ name }} </h1>
</body>
</html>

游览器运行结果
在这里插入图片描述
当需要判断时hello.py文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
{% if name>1 %}
    {{ name }} 大于1
{% else %}
   {{name}}不大于1
{% endif %}
 
</body>
</html>

游览器运行结果
在这里插入图片描述

一.控制语句

Jinja2的控制语句主要就是条件控制语句if,和循环控制语句for。
main.py文件中。
注意:路由用了蓝图注册。

@admin_blue.route('/hello')
@admin_blue.route('/hello/<name>')
def hello(name = None):
    return render_template('hello1.html',name = name )

hello1.html文件

{% if name and name == 'admin'  %}
    <h1>This is admin console</h1>
{% elif name %}
    <h1>Welcome {{ name }}!</h1>
{% else %}
    <h1>Please login</h1>
{% endif %}

在游览器中依次输入
http://127.0.0.1:5000/admin
http://127.0.0.1:5000/大猪猪
http://127.0.0.1:5000/
游览器中运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:if控制语句要用”{% endif %}”来结束 。
再次修改user.py文件,将一个列表渲染到html列表中

@admin_blue.route('/hello')
@admin_blue.route('/hello/<name>')
def hello(name = None):
    return render_template('hello1.html',name = name, digits=[1,2,3,4,5],
                           users=[{'name':'John'},
                                  {'name':'Tom', 'hidden':True},
                                  {'name':'Lisa'},
                                  {'name':'Bob'}]

                           )

hello1.py文件

{% if name and name == 'admin'  %}
    <h1>This is admin console</h1>
{% elif name %}
    <h1>Welcome {{ name }}!</h1>
{% else %}
    <h1>Please login</h1>
{% endif %}

{% for digit in digits %}
    {{ digit }}
    {% endfor %}

游览器运行结果
在这里插入图片描述
注意:
如果想去掉空格 ,就要在”for”语句的最后,和”endfor”语句的最前面各加上一个”-“号。如:

{% for digit in digits -%}
    {{ digit }}
  {%- endfor %}

在这里插入图片描述

二.表达式

表达式一般有这么几种:

1.最常用的是变量,由Flask渲染模板时传过来,比如上例中的”name”

2.也可以是任意一种Python基础类型,比如字符串{{ “Hello” }},用引号括起;或者数值,列表,元祖,字典,布尔值。直接显示基础类型没啥意义,一般配合其他表达式一起用

3.运算。包括算数运算,如{{ 2 + 3 }};比较运算,如{{ 2 > 1 }};逻辑运算,如{{ False and True }}

4.过滤器“|”和测试器“is”。

5.函数调用,如{{ current_time() }};数组下标操作,如{{ arr[1] }}

6.“in”操作符,如{{ 1 in [1,2,3] }}

7.字符串连接符”~”,作用同Python中的”+”一样,如{{ “Hello ” ~ name ~ “!” }}

8.“if”关键字,如{{ ‘Hi, %s’ % name if name }}。这里的”if”不是条件控制语句。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值