Django-模板层

你找到我的时候,我已经忘了你的样子。等我记起你的样子,你已经死了。

基础用法

变量

{{ variable=1 }}

或者定义临时变量

{% with variable=1 %}
	{{variable}}
	{% endwith %}

过滤器

default

为false或者空变量提供默认值,像这样:
{{ value|default:"nothing" }}

length

返回值的长度。它对字符串和列表都起作用。
{{ value|length }}
如果value是['a', 'b', 'c', 'd'],那么输出4。

filesizeformat

格式化为“人类可读”文件大小单位(即'13 KB',4.1 MB','102 bytes'等)。
{{ value|filesizeformat }}
如果value是123456789,输出将会是117.7MB。

标签

for循环标签

循环对象中每个元素。需要结束标签

{% endfor %} 

例如,显示athlete_list中提供的运动员列表:

<ul>
{% for athlete in athlete_list %}
	    
  • {{ athlete.name }}
  • {% endfor %} </ul>

    if,elif和else标签

    计算一个表达式,并且当表达式的值是“True”时,显示块中的内容。需要

    {% endif %}.
    

    结束标签。整体逻辑非常类似Python的if、elif和else,如下所示。:

    {% if athlete_list %}
    	    Number of athletes: {{ athlete_list|length }}
    	{% elif athlete_in_locker_room_list %}
    	    Athletes should be out of the locker room soon!
    	{% else %}
    	    No athletes.
    	{% endif %}
    

    在上面的例子中,如果athlete_list不是空的,运动员的数量将显示为0。否则,如果athlete_in_locker_room_list不为空,将显示“Athletes should be out…”。如果两个列表都是空的,将显示“No athletes.” 。

    还可以在if标签中使用过滤器和多种运算符:

    {% if athlete_list|length > 1 %}
    	   Team: {% for athlete in athlete_list %} ... {% endfor %}
    	{% else %}
    	   Athlete: {{ athlete_list.0.name }}
    	{% endif %}
    

    需要注意,大多数模版过滤器都返回字符串类型,所以使用过滤器做整数类型的比较通常是错误的,但length是一个例外。

    block和extends标签

    继承和复写模版。类似Python的类继承和重写机制。

    写一个通用模板,命名 base.html

    其他模板调用这个通用模板使用命令:

    {% extends "base.html" %}
    

    block是在子模版中可能会被覆盖掉的位置。在上面的例子中,block标签定义了三个可以被子模版内容填充的block,分别是title、content和siderbar。

    base.html 的内容可以是如下:

     <meta charset="UTF-8">
     <title>Domains Info Scan</title>
    <head>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    </head>
    
    <title>
    {% block title%} {% endblock %}
    	
    	
    	
    	{% block content%}
    	
    	{% endblock%}
    </body>
    

    即block类似于重写部分,上面的文件中,blcok 定义的变量命名为title 那么继承的时候需要保持名字事一样的

    {% extends "base.html" %}
    {% block title %}我是新标题{% endblock %}
    	
    	{% block content %}
    	

    6666666

    {% endfor %} {% endblock %}

    注释

    下面的模版将被渲染为’hello’:

    hello
    

    注释可以包含任何模版内的代码,有效的或者无效的都可以。 像这样:

    自动转义HTML

    对于单个变量:

    使用safe过滤器来关闭变量上的自动转义:

    This will be escaped: {{ data }}
    This will not be escaped: {{ data|safe }}
    

    safe是safe from further escaping或者can be safely interpreted as HTML的缩写。

    在上面的例子中,如果data含有,输出会是:

    This will be escaped: &lt;b&gt;
    This will not be escaped: <b>
    

    对于模板块:

    要控制模板上的自动转义,将模板(或者模板中的特定区域)包裹在autoescape标签中,像这样:

    {% autoescape off %}
    	    Hello {{ name }}
    	{% endautoescape %}
    

    内置标签

    标签    说明
    autoescape    自动转义开关
    block    块引用
    comment    注释
    csrf_token    CSRF令牌
    cycle    循环对象的值
    debug    调试模式
    extends    继承模版
    filter    过滤功能
    firstof    输出第一个不为False的参数
    for    循环对象
    for … empty    带empty说明的循环
    if    条件判断
    ifequal    如果等于
    ifnotequal    如果不等于
    ifchanged    如果有变化,则..
    include    导入子模版的内容
    load    加载标签和过滤器
    lorem    生成无用的废话
    now    当前时间
    regroup    根据对象重组集合
    resetcycle    重置循环
    spaceless    去除空白
    templatetag    转义模版标签符号
    url    获取url字符串
    verbatim    禁用模版引擎
    widthratio    宽度比例
    with    上下文变量管理器
    

    内置过滤器

    过滤器    说明
    add    加法
    addslashes    添加斜杠
    capfirst    首字母大写
    center    文本居中
    cut    切除字符
    date    日期格式化
    default    设置默认值
    default_if_none    为None设置默认值
    dictsort    字典排序
    dictsortreversed    字典反向排序
    divisibleby    整除判断
    escape    转义
    escapejs    转义js代码
    filesizeformat    文件尺寸人性化显示
    first    第一个元素
    floatformat    浮点数格式化
    force_escape    强制立刻转义
    get_digit    获取数字
    iriencode    转换IRI
    join    字符列表链接
    last    最后一个
    length    长度
    length_is    长度等于
    linebreaks    行转换
    linebreaksbr    行转换
    linenumbers    行号
    ljust    左对齐
    lower    小写
    make_list    分割成字符列表
    phone2numeric    电话号码
    pluralize    复数形式
    pprint    调试
    random    随机获取
    rjust    右对齐
    safe    安全确认
    safeseq    列表安全确认
    slice    切片
    slugify    转换成ASCII
    stringformat    字符串格式化
    striptags    去除HTML中的标签
    time    时间格式化
    timesince    从何时开始
    timeuntil    到何时多久
    title    所有单词首字母大写
    truncatechars    截断字符
    truncatechars_html    截断字符
    truncatewords    截断单词
    truncatewords_html    截断单词
    unordered_list    无序列表
    upper    大写
    urlencode    转义url
    urlize    url转成可点击的链接
    urlizetrunc    urlize的截断方式
    wordcount    单词计数
    wordwrap    单词包裹
    yesno    将True,False和None,映射成字符串‘yes’,‘no’,‘maybe’
    
    坚持原创技术分享,您的支持将鼓励我继续创作!
    ------ 本文结束 ------

    版权声明

    LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
    由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
    本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

    0%