Django-07 模板層 過濾器和繼承 模板過濾器 模板的繼承

模板過濾器

  • 定義:在變量輸出時對變量的值進行處理
  • 作用:可以通過使用過濾器來改變變量的輸出顯示
  • 語法:{{ 變量 | 過濾器1:'參數值1' | 過濾器2:'參數值2' ... }}

常用過濾器

過濾器 說明
lower 將字符串轉換爲全部小寫
upper 將字符串轉換爲大寫
safe 默認不對變量內的字符串進行html轉義
add:"n" 將value的值增加n
truncatechars:'n' 如果字符串字符多於指定的字符串數量,那麼會被截斷。截斷的字符串將以可翻譯的省略號序列("...")結尾
...

模板的繼承

模板繼承可以使父模板的內容重用,子模板直接繼承父模板的全部內容並可以覆蓋父模板中相應的塊

語法-父模板中:

  • 定義父模板中的塊block標籤
  • 識別出哪些在子模塊中是允許被修改的
  • block標籤:在父模板中定義,可以在子模板中覆蓋

語法-子模板中:

  • 繼承模板 extends 標籤(寫在模板文件的第一行)
    例如{% extends 'base.html' %}
  • 子模板 重寫父模板中的內容塊
    {% block block_name %}
    子模板用來覆蓋父模板中 block_name 塊的內容
    {% endblock block_name %}

例子

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    {% block mytitle %}
    <title>主頁</title>
    {% endblock %}
</head>
<body>
<a href="/music_index">音樂頻道</a>
<a href="/sport_index">體育頻道</a>
<br>
{% block info %}
這是主頁
{% endblock %}
<br>
<h3>有任何問題請聯繫xxx</h3>
</body>
</html>

music.html

{% extends 'base.html' %}
{% block mytitle %}
    <title>音樂頻道</title>
{% endblock %}
{% block info %}
    歡迎來到音樂頻道
{% endblock %}

views.py

def base_view(request):
    return render(request,'base.html')

def music_view(request):
    return render(request,'music.html')

def sport_view(request):
    return render(request,'sport.html')

urls.py

    path('base_index',views.base_view),
    path('music_index',views.music_view),
    path('sport_index',views.sport_view),

重寫的覆蓋規則

  • 不重寫,將按照父模板的效果顯示
  • 重寫,則按照重寫效果顯示

注意

  • 模板繼承時,服務器端的動態內容無法繼承
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章