Django之模板语法

模板语法之传值

  1、跟变量相关的都使用双括号 {{}}

  2、跟逻辑相关的都使用 {%  %}

  3、模板文件中取值一律使用点语法 

  4、在模板文件里面的函数和类,不用加括号,会自动加括号调用, 不能传递参数

模板语法之过滤器

  类似于python里面的内置方法

  1、语法

    {{变量|过滤器:参数}}

  2、default

    如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值

{{ value|default:"nothing"}}

  3、length

    返回值的长度。它对字符串和列表都起作用。

{{ value|length }}

  4、filesizeformat

    将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB''4.1 MB''102 bytes', 等等)。

{{ value|filesizeformat }}

    如果 value 是 123456789,输出将会是 117.7 MB

  5、date

    如果 value=datetime.datetime.now()

{{ value|date:"Y-m-d"}}

  6、slice

    如果 value=”hello world”

{{ value|slice:"2:-1"}}

  7、truncatechars

    如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。

    参数:要截断的字符数

{{ value|truncatechars:9}}

  8、safe

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

value="<a href="">点击</a>"
{{ value|safe}}

  9、其它过滤器(了解)

过滤器描述示例
upper 以大写方式输出  
add 给value加上一个数值  
addslashes 单引号加上转义号  
capfirst 第一个字母大写  
center 输出指定长度的字符串,把变量居中  
cut 删除指定字符串  
date 格式化日期  
default 如果值不存在,则使用默认值代替  
default_if_none 如果值为None, 则使用默认值代替  
dictsort 按某字段排序,变量必须是一个dictionary  
dictsortreversed 按某字段倒序排序,变量必须是dictionary  
divisibleby 判断是否可以被数字整除  
escape 按HTML转义,比如将”<”转换为”&lt”  
filesizeformat 增加数字的可读性,转换结果为13KB,89MB,3Bytes等  
first 返回列表的第1个元素,变量必须是一个列表  
floatformat 转换为指定精度的小数,默认保留1位小数  
get_digit 从个位数开始截取指定位置的数字  
join 用指定分隔符连接列表  
length 返回列表中元素的个数或字符串长度  
length_is 检查列表,字符串长度是否符合指定的值  
linebreaks


标签包裹变量

 
linebreaksbr
标签代替换行符
 
linenumbers 为变量中的每一行加上行号  
ljust 输出指定长度的字符串,变量左对齐  
lower 字符串变小写  
make_list 将字符串转换为列表  
pluralize 根据数字确定是否输出英文复数符号  
random 返回列表的随机一项  
removetags 删除字符串中指定的HTML标记  
rjust 输出指定长度的字符串,变量右对齐  
slice 切片操作, 返回列表  
slugify 在字符串中留下减号和下划线,其它符号删除,空格用减号替换  
stringformat 字符串格式化,语法同python  
time 返回日期的时间部分  
timesince 以“到现在为止过了多长时间”显示时间变量  
timeuntil 以“从现在开始到时间变量”还有多长时间显示时间变量  
title 每个单词首字母大写  
truncatewords 将字符串转换为省略表达方式  
truncatewords_html 同上,但保留其中的HTML标签  
urlencode 将字符串中的特殊字符转换为url兼容表达方式  
urlize 将变量字符串中的url由纯文本变为链接  
wordcount 返回变量字符串中的单词数

模板语法之标签

  1、循环序号可以通过{{forloop}}显示

forloop.counter            The current iteration of the loop (1-indexed) 当前循环的索引值(从1开始)
forloop.counter0           The current iteration of the loop (0-indexed) 当前循环的索引值(从0开始)
forloop.revcounter         The number of iterations from the end of the loop (1-indexed) 当前循环的倒序索引值(从1开始)
forloop.revcounter0        The number of iterations from the end of the loop (0-indexed) 当前循环的倒序索引值(从0开始)
forloop.first              True if this is the first time through the loop 当前循环是不是第一次循环(布尔值)
forloop.last               True if this is the last time through the loop 当前循环是不是最后一次循环(布尔值)
forloop.parentloop         本层循环的外层循环

   2、在模板中使用if else for  

{% for foo in l %}
    <p>
{#     {{ forloop }}#}
        {% if forloop.first %}
            第一次
        {% elif forloop.last %}
            最后一次
        {% else %}
            {{ foo }}
        {% endif %}
    </p>
{% endfor %}

  3、处理字典

{% for foo in user_dict.keys %}
   <p>
    {{ foo }}
   </p>
{% endfor %}


{% for foo in user_dict.values %}
    <p>
        {{ foo }}
    </p>
{% endfor %}


{% for foo in user_dict.items %}
    <p>
    {{ foo }}
    </p>
{% endfor %}

模板继承

  1、继承

    模板页面写好之后,继承页面直接写{% extends '模板页面名‘ %}

   这样继承之后子模版和原模板的内容一摸一样

  2、继承并支持修改

    模板页面想要修改的部分

{% block content %}
         <p>亚洲最大的赌场</p>
{% endblock %}

     子继承页面

{% block content %}
    
     修改内容

 
{% endblock %}

  3、一般情况下模板页面应该至少有三块可以被修改的区域

    1、css区域

    2、js区域

    3、html区域

   这样写之后每个页面就有自己独有的css代码、js代码、html代码

模板导入

  语法  

{% include  导入页面 %}

  例子

需要被导入的

<h1>这是left_menu</h1>

导入

{% include 'left_menu.html' %}

 

posted @ 2022-03-02 16:47  那就凑个整吧  阅读(75)  评论(0编辑  收藏  举报