2. 继续Jinja2——变量过滤器、控制结构

  1. 过滤器就是加在变量后面,控制变量显示格式的一个参数。语法格式为竖线加参数名,如:
<h1>Hello, {{name|title}}</h1>

可用的参数有:
safe 渲染值时不转义
capitalize 首字母大写,其他字母小写
lower 所有字母小写
upper 所有字母大写
title 标题格式,以空格划分的每个单词首字母大写,其他字母小写
trim 修剪,去掉值首尾的空格
striptags 渲染前把值中所有的HTML标签删掉

  1. 控制结构
    总的来说,就是Python的控制结构,把语法放到{% scripts %}的包围中(前后花团锦簇的感觉),冒号没有了,正常缩进,另外在控制结构的末尾要加一句{%endif/for %}。
    2.1昨天的笔记中写到了将列表遍历作为模板的变量,就是用for循环控制:
<ul> # HTML中的无序列表标签,有序列表标签为<ol></ol>,即列表项前带数字编号
     {% for item  in list_name %}
          <li>{{ item }}</li>  #HTML 中的列表标签
     {% endfor %}
</ul>

在hello.py的Python代码中,name=name后面加上list__name=list_name就可以了。列表中有汉字的话,需要在汉字元素前加u,然后在Python脚本第一行添加# -- coding: cp936 --声明,就是脚本中有汉字保存时提示的那个。
2.2 宏(不了解这玩意)

{% macro render_comment(comment) %}
     <li>{{comment }}</li>
{% endmacro %}

还可以将宏保存在单独的文件中重复使用,就像模板文件一样:

{% import 'macro.html' as macros %}
<ul>
     {% for comment in comments %}
          {{ macros.render_comment(comment) }}
     {% endfor %}
</ul>

2.3 模板继承(在视频中看到的就是这种)
类似Python代码中的类继承。首先创建一个名为base.html的基模板文件:

<html>
<head>
     {% block head %}
     <title>{% block title %}{% endblock %} - My Application</title>
     {% endblock%}
</head>
<body>
     {% block body %}
     {% endblock %}
</body>
<html>

衍生模板:

{% extends "base.html" %}  # extends指令声明这个模板衍生自base.html。
{% block title %}Index{% endblock %}
{% block head %}
     {{ super() }}     #head块在基模板中不是空的,用super()获取原来的内容
     <style>
     </style>
{% endblock %}
{% block body %}
<h1>Hello, World!</h1>
{% endblock %}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值