zoukankan      html  css  js  c++  java
  • Django之模板

    模板

    2.0官方文档

    Django模板:html文件 + 模板语法

    常用的两个模板符号:{{  }}和{%  %}

    变量

    {{ 变量名 }}

    变量名由字母数字和下划线组成。大括号里可以替换成字符串、数字、序列、对象。

    点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值,支持深度查询。

    例子:

    views里的代码

    html文件里的写法:

    Filters

    语法:{{ value|filter_name:参数 }}

    default

    {{ value|default: "nothing"}}  如果value值没传或bool值为False就显示default值
    
    {{ value|default_if_none: "nothing"}}  如果value值是None,就显示default值

    length

    {{ value|length }}  返回value的长度

    filesizeformat

    {{ value|filesizeformat }}  将value转化成人类可读的尺寸大小,如果 value 是 123456789,输出将会是 117.7 MB。

    slice

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

    date

    {{ value|date:"Y-m-d H:i:s"}}  格式化时间

    safe

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

    比如:

    value = "<a href='#'>点我</a>"   如果加了safe  {{ value|safe }},页面中将会显示一个点我的链接,而不是一个字符串

    {{ value|safe}}

    truncatechars

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

    参数:截断的字符数

    {{ value|truncatechars:9}}

    truncatewords:截断单词(以空格鉴定)

    Tags

    for

    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% endfor %}
    </ul>

    可以利用{% for obj in list reversed %}反向完成循环

    for循环可用的一些参数:

     for  empty

    for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。

    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% empty %}
        <li>空空如也</li>
    {% endfor %}
    </ul>

    if

    可以是if...else..也可以是if...elif...else...

    {% if user_list %}
      用户人数:{{ user_list|length }}
    {% elif black_list %}
      黑名单数:{{ black_list|length }}
    {% else %}
      没有用户
    {% endif %}

    if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

    注意:Django的模板语言不支持连续判断,即:{% if a > b > c %}

    以下语句效果是一样的

    with

    定义一个中间变量

    {% with total=business.employees.count %}
        {{ total }} employee{{ total|pluralize }}
    {% endwith %}

    csrf_token

    这个标签用于跨站请求伪造保护。

    在页面的form表单里面写上{% csrf_token %}

    另:Django的模板语言中属性的优先级大于方法

  • 相关阅读:
    Elementary Methods in Number Theory Exercise 1.2.25
    Elementary Methods in Number Theory Exercise 1.2.14
    图解欧几里德算法
    图解欧几里德算法
    Elementary Methods in Number Theory Exercise 1.2.14
    Android中的长度单位详解(dp、sp、px、in、pt、mm)
    分享下多年积累的对JAVA程序员成长之路的总结
    android异常之都是deamon惹的祸The connection to adb is down, and a severe error has occured.
    TomatoCartv1.1.8.2部署时报错
    JavaScript浏览器对象之二Document对象
  • 原文地址:https://www.cnblogs.com/hp491604738/p/9226466.html
Copyright © 2011-2022 走看看