毛毛Django修煉之路3——Django基本框架(系統模板)
阿新 • • 發佈:2018-12-14
毛毛Django修煉之路3——Django基本框架(系統模板)
一、基本語法
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迴圈基本用法
# 基本迴圈
{% for i in name_list %}
{{ i }}
{% endfor %}
# 如果迴圈裡面的可迭代物件沒有資料就返回下一句(空空如也)
{% for i in name_list %}
{{ i }}
{% empty %}
空空如也
{% endfor %}
3、for迴圈可用屬性
語法 | 屬性 |
---|---|
forloop.counter | 從1開始計數(1,2,3…) |
forloop.counter0 | 從0 開始計數(0,1,2…) |
forloop.revcounter | 倒計時直到1 (9,8,7…2,1) |
forloop.revcounter0 | 倒計時直到1 (9,8,7…2,1,0) |
forloop.first | 迴圈的第一個數,返回布林值 |
forloop.last | 迴圈的最後一個數,返回布林值 |
3、filter 用法——用“|”來使用
1、常用的內建filter用法:
語法 | 作用 |
---|---|
length | 計算文字長度 |
filesizeformat | 格式化檔案大小(返回人們易讀的格式) |
data : “Y-m-d H:i:s” | 格式化時間輸出 |
slice | 切片(字串,列表…) |
safe | 防止XSS攻擊(網頁尾本攻擊) |
truncatechars:20 | 擷取多少字元,多餘的用 … 表示 |
default | 給定預設值(沒有返回值就在頁面顯示預設值) |
自定義filter方法
1、定義階段:
a、在APP下面建立一個Python包(py資料夾):templatetags (名字不能變)
b、在包裡面建立一個py檔案,名字隨意。
c、在上述py檔案裡面進行如下操作:
from django import template # 匯入模組
register = template.Library #生成一個註冊的例項
@register.filter(name="addsb") # 固定用法,name後面是自己去的名字,後面用這個呼叫
def add_sb(arg):
return "{}sb".format(arg)# arg是自己傳過來的一個變數
2、呼叫階段:
a、在Django模板檔案中匯入剛才新建的py檔案
{% load py檔名 %}
b、按照filter的語法呼叫
{{ name | addsb }}
四、模板和繼承
1、為什麼要有模板和繼承:
在網頁的過程中難免會出現程式碼複用或者是一個頁面只改動一部分資料其他的板式不發生變化,此時將這一部分複用的程式碼,放在新建的一個檔案裡面,用於以後呼叫即可節省時間。
2、具體的使用步驟:
1、先把公用的HTML部分程式碼提取出來放在一個HTML檔案裡面(如:base.html)
2、在html檔案程式碼內部需要填充其他html檔案的地方用block進行佔位,如下程式碼
{% block page_main %}
{% endblock %}
3、在需要呼叫base.html檔案的檔案裡面用extends 來實現繼承 base.html 檔案
4、然後用 在block 裡面寫入需要填入佔位符的程式碼!
如下,使用方法!
#在base.html檔案裡面有:
{% block page_main %}
{% endblock %}
#在需要呼叫的html檔案裡面有:
{% extends 'base.html' %}
{% block page_nain %}
--- #寫入樣式程式碼
--- #繼續寫
{% endblock %}
四、元件——和繼承母版類似
如:可以將常出現的導航條儲存在一個單獨的HTML檔案裡面,在我的另一個檔案需要用到這個導航條的時候我可以通過函式直接呼叫我需要的程式碼!此時元件就可以實現這個功能!
===》{% include ‘navbar.html’ %}
人生苦短,我學Python!