zoukankan      html  css  js  c++  java
  • Django内置template标签

    html过滤{% autoescape on|off %} {{body}} {% endautoescape %}

    注释{% comment %} {% endcomment %}

    csrf攻击 {% csrf_token %}

    循环选择 {% cycle %}    <tr class='{% cycle 'row1' 'row2' %}>

    使用当前循环选择

    <tr>
        <td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td>
        <td class="{{ rowcolors }}">...</td>
    </tr>
    <tr>
        <td class="{% cycle rowcolors %}">...</td>
        <td class="{{ rowcolors }}">...</td>
    </tr>
    

     注意到变量的值是没有自动转义的,所以要加上显式转义:

    {% for o in some_list %}
        <tr class="{% filter force_escape %}{% cycle rowvalue1 rowvalue2 %}{% endfilter %}">
            ...
        </tr>
    {% endfor %}
    

     如果你只是想声明这个循环,而不是输出循环的值,那么在标签的最后增加关键字silent。例:

    {% for obj in some_list %}
        {% cycle 'row1' 'row2' as rowcolors silent %}
        <tr class="{{ rowcolors }}">{% include "subtemplate.html " %}</tr>
    {% endfor %}
    

     一旦你在cycle定义中使用了关键字silent,随后的cycle标签也会自动使用silent。下面的例子什么也不会输出,即使第二次cycle没有指定silent

    {% cycle 'row1' 'row2' as rowcolors silent %}
    {% cycle rowcolors %}
    

    new in Django1.6

    {% load cycle from future %}

    此时可以使用autoescape off

    {% for o in some_list %}
        <tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
            ...
        </tr>
    {% endfor %}
    

    输出地一个不是false的变量

    {% firstof var1 var2 var3 %}

    等价于

    {% if var1 %}
        {{ var1|safe }}
    {% elif var2 %}
        {{ var2|safe }}
    {% elif var3 %}
        {{ var3|safe }}
    {% endif %}
    

     可以加个默认值

    {% firstof var1 var2 var3 "fallback value" %}


    {% include "name_snippet.html" with person="Jane" greeting="Hello" %}

    加入新页面,传入新变量.


    重新分组

    假设传入的参数如下:

    cities = [
        {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
        {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
        {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
        {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
        {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
    ]
    

     我们想按照国家来划分展示:

    • India
      • Mumbai: 19,000,000
      • Calcutta: 15,000,000
    • USA
      • New York: 20,000,000
      • Chicago: 7,000,000
    • Japan
      • Tokyo: 33,000,000  

    我们可以使用{% regroup %}

    {% regroup cities by country as country_list %}
    
    <ul>
    {% for country in country_list %}
        <li>{{ country.grouper }}
        <ul>
            {% for item in country.list %}
              <li>{{ item.name }}: {{ item.population }}</li>
            {% endfor %}
        </ul>
        </li>
    {% endfor %}
    </ul>
    

     但是相同country必须挨在一起排列

    cities = [
        {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
        {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
        {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
        {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
        {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
    ]
    

     否则会输出如下:

    • India
      • Mumbai: 19,000,000
    • USA
      • New York: 20,000,000
    • India
      • Calcutta: 15,000,000
    • USA
      • Chicago: 7,000,000
    • Japan
      • Tokyo: 33,000,000

    解决办法可以使用

    {% regroup cities|dictsort:"country" by country as country_list %}

    并且我们也可以使用country的属性进行分类,例如country有一个外键description

    {% regroup cities by country.description as country_list %}

    假如country是一个选择值,我么可以使用get_country_display来显示它的string而不是key值


    {% spceless %}去掉多余的空格

    {% spaceless %}
        <p>
            <a href="foo/">Foo</a>
        </p>
    {% endspaceless %}
    

     效果如下:

    <p><a href="foo/">Foo</a></p>

    但是只有紧挨着的标签内的空格才会去除,内部的标签空格不会去掉.

    {% spaceless %}
        <strong>
            Hello
        </strong>
    {% endspaceless %}
    

     <strong>里的空格就不会去掉.


    url传参

    {% url 'path.to.some_view' v1 v2 %}
    {% url 'path.to.some_view' arg1=v1 arg2=v2 %}
    

     我们可以在url中使用as参数

    {% url 'path.to.view' arg arg2 as the_url %}

    就可以在页面其他地方使用

    <a href="{{ the_url }}">I'm linking to {{ the_url }}</a>


    {% verbatim %} {% endverbatim %}禁止template render该内容.


    重命名变量内容,减少输入

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

     也可以

    {% with alpha=1 beta=2 %}
        ...
    {% endwith %}
    

    排序

    {{ value|dictsort:"name" }}

    假如value是

    [
        {'name': 'zed', 'age': 19},
        {'name': 'amy', 'age': 22},
        {'name': 'joe', 'age': 31},
    ]
    

     排序后的输出为

    [
        {'name': 'amy', 'age': 22},
        {'name': 'joe', 'age': 31},
        {'name': 'zed', 'age': 19},
    ]
    
    {% for book in books|dictsort:"author.age" %}
        * {{ book.title }} ({{ book.author.name }})
    {% endfor %}
    

    可整除

    {{ value|divisibleby:"3" }}


    过去了多长时间

    {{ blog_date|timesince:comment_date }} 评论的时间距博客发表时间过了多久.

    还多长时间

    {{ conference_date|timeuntil:from_date }} from_data距conference_data还多长时间.


    截取字符

    {{ value|truncatechars:9 }}  例如value是"Joel is a slug"输出会是"Joel i..."

    {{ value|truncatechars_html:9 }} 假如value是"<p>Joel is a slug<p>"输出会是<p>Joel i...</p>

    {{ value|truncatewords:2 }} 假如value是"Joel is a slug"输出会是"Joel is..."

    {{ value|truncatewords_html:2 }} 假如value是"<p>Joel is a slug<p>"输出会是<p>Joel is...</p>


    {{ value|urlencode:"" }} If value is "http://www.example.org/", the output will be "http%3A%2F%2Fwww.example.org%2F".


    {{ value|yesno:"yeah,no,maybe" }}


    {% load static %}
    {% static "images/hi.jpg" as myphoto %}
    <img src="{{ myphoto }}"></img>
    

     等价于

    {% load static %}
    <img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />
    
  • 相关阅读:
    帮同事整理的 C# 调用 C++ 回调函数
    解决VS2010下使用NUnit 无法进行调试的问题
    Linux /var/log/messages 偶尔会发生time reset +6.288863s
    linux设置静态路由
    os auto installtion
    read 在bash ksh下的不同表现
    C#编码规范1
    C#中new一个对象时,发生了什么事?
    C# 实例化类的执行顺序
    C#类注释规范
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4242821.html
Copyright © 2011-2022 走看看