1. 程式人生 > >Django模板系統

Django模板系統

tin length RM lis cat HA 變量名 格式 temp

技術分享圖片

官方文檔鏈接:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#std:templatetag-for

技術分享圖片

只需要記兩種特殊符號:

{{ }}和 {% %}

變量相關的用{{}},邏輯相關的用{%%}。

技術分享圖片

{{ 變量名 }}

變量名由字母數字和下劃線組成。

點(.)在模板語言中有特殊的含義,用來獲取對象的相應屬性值。

幾個例子:

view中代碼:

def Test(request):
    from datetime import datetime
    now=datetime.now()
    name=yimi
    age
=25 hobbly_list=[聽歌,打球,發呆] hobbly_dict={yimi:發呆,haha:聽歌,wawa: 打球} file_size=131413141314 blog=<a href="http://www.cnblogs.com/liwenzhou/p/7931828.html">點我</a> file=daishdfkanf riwyjlasdnakjfhqiuwryqcscnaksdfhlairyqi sfjdskdfhiubvaidkaw class Person(): def __init__(self,name,age): self.name
=name self.age=age def __str__(self): return 我叫%s,今年%s歲%(self.name,self.age) #在內置方法中必須加上self.屬性 yimi=Person(yimi,25) haha=Person(haha,26) wawa=Person(wawa,28) person_list=[yimi,haha,wawa] return render(request,test.html,{ name
:name, age:age, hobbly_list:hobbly_list, person_list:person_list, file_size:file_size, now_time:now, blog:blog, file:file })

模板中支持的寫法:

{# 取l中的第一個參數 #}
{{ hobbly_list.0 }}
{# 取字典中key的值 #}
{{ d.name }}
{# 取對象的name屬性 #}
{{ person_list.0.name }}
{# .操作只能調用不帶參數的方法 #}
{{ person_list.0.dream }}

技術分享圖片

語法: {{ value|filter_name:參數 }}

在templates中的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>試驗</title>
</head>
<body>
{{ name }}
<hr>
{{ age }}
<hr>
<ul>
    {% for hobbly in hobbly_list %}
        <li>{{ hobbly }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for person in person_list %}
        <li>{{ person.name }}</li>
        <li>{{ person.age }}</li>
        <li>{{ person }}</li>
    {% endfor %}
</ul>
<hr>
{{names|default:沒有這個變量  }}
#如果value(names)值沒傳的話就顯示默認參數:沒有這個變量
<hr>
{{name|length }}
#|左右沒有空格沒有空格沒有空格返回value的長度,如 value=‘yimi的話,就顯示4.

<hr>
{{file_size|filesizeformat}}
#將值格式化為一個 “人類可讀的” 文件尺寸 (例如 13 KB, 4.1 MB, 102 bytes, 等等)
<hr>
{{ name|slice:1:3 }}
{{ age|slice:0:1 }}
#切片  #數字類型不能切片
<hr>
{{ now_time|date:Y-m-d H-i-s }}
#格式化 轉換成我們能一眼讀懂的格式:年月日 時分秒
<hr>
{{ blog|safe }}
{{ blog }}
#為了保證安全性。Django的模板中會對HTML標簽和JS等語法標簽進行自動轉義,如果不希望被轉義,在value後面加上safe
<hr>
{{ file }}
<hr>
{{ file|truncatechars:9 }}
#
truncatechars後面必須加上字符數量
#如果字符串字符多於指定的字符數量,那麽會被截斷。截斷的字符串將以可翻譯的省略號序列(“...”)結尾。 <hr> </body> </html>

顯示在頁面上的結果

技術分享圖片

技術分享圖片

自定義過濾器只是帶有一個或兩個參數的Python函數:

  • 變量(輸入)的值 - -不一定是一個字符串
  • 參數的值 - 這可以有一個默認值,或完全省略

例如,在過濾器{{var | foo:“bar”}}中,過濾器foo將傳遞變量var和參數“bar”

自定義filter代碼文件擺放位置:

技術分享圖片

技術分享圖片

結果:

技術分享圖片

技術分享圖片

for

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

for循環可用的一些參數:

技術分享圖片

for ... empty

如果循環的課叠代對象沒有值,則走empty下面的內容

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

if,elif和else

{% if user_list %}
  用戶人數:{{ user_list|length }}
{% elif black_list %}
  黑名單數:{{ black_list|length }}
{% else %}
  沒有用戶
{% endif %}

當然也可以只有if和else

{% if user_list|length > 5 %}
  七座豪華SUV
{% else %}
    黃包車
{% endif %}

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

with

定義一個中間變量,相當於給一個變量起一個別名

<p>
    {% with hobbly=hobbly_dict.yimi %}
        {{ hobbly }}
    {% endwith %}

</p>
結果:
發呆

Django模板系統