1. 程式人生 > >django之Template

django之Template

實例 mat bsp oop loop one first enc 日期

模板的組成

組成:HTML代碼+邏輯控制代碼

邏輯控制代碼組成

1 變量(使用雙大括號來引用變量):

語法格式: {{var_name}}

深度變量的查找(萬能的句點號)

在到目前為止的例子中,我們通過 context 傳遞的簡單參數值主要是字符串,然而,模板系統能夠非常簡潔地處理更加復雜的數據結構,例如list、dictionary和自定義的對象。

在 Django 模板中遍歷復雜數據結構的關鍵是句點字符 (.)。

變量的過濾器(filter)的使用

  # 1  add          :   給變量加上相應的值
   #
   # 2  addslashes   :    給變量中的引號前加上斜線
# # 3 capfirst : 首字母大寫 # # 4 cut : 從字符串中移除指定的字符 # # 5 date : 格式化日期字符串 (time : 格式化時間字符串)
    {{ value|date:‘H-m-d H:i:s‘ }}
   # 6 default : 如果值是False,就替換成設置的默認值,否則就是用本來的值

# 7 default_if_none: 如果值是None,就替換成設置的默認值,否則就使用本來的值
#實例: #value1="aBcDe" {{ value1|upper }}<br> #value2=5 {{ value2|add:3 }}<br> #value3=‘he llo wo r ld‘ {{ value3|cut: }}<br> #import datetime #value4=datetime.datetime.now() {{ value4|date:Y-m-d }}<br> #value5=[] {{ value5|default:空的 }}<br> #value6=‘<a href="#">跳轉</a>‘
{{ value6 }} {% autoescape off %} {{ value6 }} {% endautoescape %} {{ value6|safe }}<br> {{ value6|striptags }} #value7=‘1234‘ {{ value7|filesizeformat }}<br> {{ value7|first }}<br> {{ value7|length }}<br> {{ value7|slice:":-1" }}<br> #value8=‘http://www.baidu.com/?a=1&b=3‘ {{ value8|urlencode }}<br>

2 標簽(tag)(使用大括號和百分比的組合來表示使用tag)

語法格式: {% tags %}

if

    {% if expression %}
        ...
    {% elif expression %}
        ...
    {% endif %}

for

{% for item in list %}
    <p>{{ forloop.counter0 }}</p>
{% endfor %}
#forloop.counter表示循環的次數,從1開始計數,第一次循環設為1
#forloop.counter0表示循環的次數,從0開始計數,第一次循環設為0
#forloop.revcounter表示循環的次數,從1開始計數,逆序
#forloop.revcounter0表示循環的次數,從0開始計數,逆序
#forloop.first {% if forloop.first %}
#forloop.last     {% if forloop.last %}

{% for item in list %}
{% if forloop.first %} #第一次循環時
<p>first</p>
{% elif forloop.last %} #最後一次循環時
<p>last</p>
{% else %}
<p>{{ forloop.counter }}</p>
{% endif %}
{% endfor %}

3 自定義filter和simple_tag

from django import template
from django.utils.safestring import mark_safe

register = template.Library()   #register的名字是固定的,不可改變


@register.filter
def filter_multi(v1,v2):
    return  v1 * v2


@register.simple_tag
def simple_tag_multi(v1,v2):
    return  v1 * v2


@register.simple_tag
def my_input(id,arg):
    result = "<input type=‘text‘ id=‘%s‘ class=‘%s‘ />" %(id,arg,)
    return mark_safe(result)

https://docs.djangoproject.com/en/1.11/ref/templates/builtins/

django之Template