设为首页 加入收藏

TOP

Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)(二)
2019-06-11 22:06:14 】 浏览:79
Tags:Web 框架 Django_04 模板 了解 过滤器 标签 定义 inclusion_tag 继承 导入
第几天,3字母的字符串.
'Fri' f 时间, 12-小时制的小时和分钟数, 如果分钟数为零,则不显示.(django 扩展). '1', '1:30' F 月份, 长文本格式. 'January' g 小时, 12-小时制,没有前导零 '1' to '12' G 小时, 24-小时制,没有前导零 '0' to '23' h 小时, 12-小时制,有前导零 '01' to '12' H 小时, 24-小时制,有前导零 '00' to '23' i 分钟. '00' to '59' I 未实现 j 每月第几天, 无前导零 '1' to '31' l 每周第几天,长文本格式. 'Friday' L 是否闰年. True or False m 数字表示的月份,有前导零. '01' to '12' M 月份,3字母短文本格式. 'Jan' n 数字表示的月份,无前导零 '1' to '12' N 出版风格的月份缩写(django 扩展) 'Jan.', 'Feb.', 'March', 'May' O 与格林威治的时间差(以小时计) '+0200' P 12小时制的小时分钟及'a.m.'/'p.m.' 分钟数若为零则不显示. 用字符串表示特殊 的时间点, 如 'midnight''noon' (django扩展) '1 a.m.', '1:30 p.m.', 'midnight','noon', '12:30 p.m.' r RFC 822 格式的日期 . 'Thu, 21 Dec 2000 16:01:07+0200' s 秒数, 带有前导零的数字表示 '00' to '59' S 英语序数后缀,用于一个月的第几天,2个字符 'st', 'nd', 'rd' or 'th' t 给定月共有多少天. 28 to 31 T 本机时区. 'EST', 'MDT' U 未实现 w 一周中的第几天,没有前导零的数字 '0' (Sunday) to '6' (Saturday) W ISO-8601 一年的第多少星期数, 一周从 星期一开始 1, 23 y Year, 2 位数字表示 '99' Y Year, 4 位数字表示 '1999' z 一年中的第几天 . 0 to 365 Z 以秒计的时区偏移量. 这个偏移量对UTC西部 时区总是负数,而对UTC东部时区则总是正数 -43200 to 43200 日期格式化参数

#safe

Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。

后端:
value = "<a href='https://www.cnblogs.com/suguangti/'>点我</a>"

前端:
{{ value }}
{{ value|safe }}

结果:
<a href='https://www.cnblogs.com/suguangti/'>点我</a> 
点我

下面那个‘点我’在页面上是一个a标签,点击可跳转

上面的safe是在前端取消转义,后端取消转义方法如下:

from django.utils.safestring import mark_safe
xxx = mark_safe('<h1>我是h1标签</h1>')

#truncatechars
如果字符串字符多于指定的字符数量,那么会被截断,截断的剩余字符将用省略号结尾表示。
参数:截断的字符数(包含三个点)

后端:
ss = 'abcdefghijklmnopqrstuvwxyz'

前端:
{{ ss|truncatechars:10 }}

结果:(注意...也算进长度里了)
abcdefg...

#truncatewords
以一个单词为一个元素,单词与单词之间的空格为区分依据,将一定数量的单词进行截断,截断后面的用...表示
一个单词加上一个空格  计数一个

后端:
sss = "Life was like a box of chocolates you never know what you're gonna get."

前端:
{{ sss|truncatewords:7 }}

显示结果:
Life was like a box of chocolates ...
(注意chocolates后面有个空格)

 #cut

移除变量中所有的指定相同的字符串

{{ value|cut:' ' }}

后端:
ssss = 'you do bb now,bb is not good thing, why do you bb for too many times!'

前端:
{{ ssss|cut:'bb' }}

显示结果:
you do now, is not good thing, why do you for too many times!

#join
将列表中的元素用指定字符连接起来

后端
ll = [1, 2, 3, 4, 5]

前端
{{ ll|join:'@' }}

结果
1@2@3@4@5
  • 标签介绍:
    #for循环(内部有个empty判断,详见下面if判断示例)
    后端
    ll = [1, 2, 3, 4, 5]
    
    前端
    {% for foo in ll %}
         <p>{{ foo }}</p>
    {% endfor %}
    
    结果显示:
    1
    2
    3
    4
    5

    forloop的使用:

    后端
    ll = [1, 2, 3, 4, 5]
    
    前端
    {% for foo in ll %}
         <p>{{ forloop }}</p>
    {% endfor %}

    forlop里面有几个属性需要我们注意,比如 counter0,counter,first,last它们对应的值在for循环过程中的开始和结束是不一样的
    #if 判断

    {% for foo in l %}
    if else
        {% if flag %}
            <p>flag不为空</p>
            {% else %}
            <p>flag是空</p>
        {% endif %}
        
    {#(l = ['a', 'b', 'c', 'd', 'e'])#}
    {% for foo in l %}
        {% if forloop.first %}
            <p>这是我的第一次</p>
        {% elif forloop.last %}
            <p>这是最后一次了啊</p>
        {% else %}
            <p>嗨起来!!!</p>
        {% endif %}
        {% empty %}   <!--如果l = [],上面的for循环不会进行,只会走这一步-->
            <p>你给我的容器类型是个空啊,没法for循环</p>
    {% endfor %}
    l = ['a', 'b', 'c', 'd', 'e']
    这是我的第一
  • 首页 上一页 1 2 3 下一页 尾页 2/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Python 线性方程组求解之:Jacobi.. 下一篇01_爬虫的基本概念和流程

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目