1. 程式人生 > >django06 模板語言相關

django06 模板語言相關

day66 2018-05-08

1. 內容回顧
1. 模板系統(字串替換)
1. 語法
1. 變數相關: {{ name }},{{name|length}},{{name|default:"預設值"}}
2. 邏輯相關:
1. if判斷
{% if a > b %}
{% endif %}

{% if a > b %}
{% else %}
{% endif %}

{% if a > b %}
{% elif %}
{% else %}
{% endif %}
2. for迴圈
1. for迴圈的基本用法:
{% for i in name_list %}
{{ i }}
{% endfor %}

{% for i in name_list %}
{{ i }}
{% empty %}
空空如也
{% endfor %}

2. for迴圈可用的屬性:
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0

forloop.first
forloop.last

forloop.parentloop --> 兩層for迴圈,內層迴圈引用外層迴圈

2. filter
1. 常用的內建filter
1. length
2. filesizeformat --> 格式化檔案大小的
3. date:'Y-m-d H:i:s' --> 格式化時間的
4. slice
5. safe --> XSS攻擊(跨站指令碼攻擊)
6. truncatechars:20 --> 擷取字元,超過的用...表示
7. default

2. 自定義的filter
示例:
1. addsb
2. addstr
具體的實現方式:
1. 定義階段
1. 在app下面新建一個python的包:templatetags
2. 在上面的Python包中新建一個Python檔案,名字隨意
3. 在上述python檔案中:
from django import template

# 生成一個註冊用的例項
register = template.Library()
# 定義並註冊一個自定義的filter函式
@register.filter(name='addsb')
def add_sb(arg):
return "{} sb".format(arg)
2. 呼叫階段:
1. 在Django的模板檔案中,匯入剛才新建的python檔案
{% load py檔名 %}
2. 按照filter的語法呼叫
{{ name|addsb }}

2. 今日內容
1. 母版和繼承
1. 為什麼要有模板和繼承:
把多個頁面公用的部分提取出來,放在一個 母版 裡面。
其他的頁面只需要 繼承 母版就可以了。
2. 具體使用的步驟:
1. 把公用的HTML部分提取出來,放到base.html檔案中
2. 在base.html中,通過定義block,把每個頁面不同的部分區分出來
3. 在具體的頁面中,先繼承母版
4. 然後block名去指定替換母版中相應的位置

3. 使用母版和繼承的注意事項:
1. {% extends 'base.html' %} --> 母版檔案:base.html要加引號
2. {% extends 'base.html' %}必須放在子頁面的第一行!!!
3. 可以在base.html中定義很多block,通常我們會額外定義page-css和page-js兩個塊
4. view.py相應的函式中返回的是對應的子頁面檔案 不是不是不是 base.html
2. 元件
{% include 'xxx.html'%}

3. 靜態檔案的靈活寫法
1.
{% load static %}
{% static 'jQuery-3.3.1.js' %}
2. {% get_static_prefix %}jQuery-3.3.1.js

4. 自定義simple_tag和inclusion_tag