Django框架之模板層(d75)
一 模版語法之變量:
** locals() 會把*該*視圖函數內的變量,傳到模板
** return render(request, 'index.html', locals())
1 {{ 變量 }}:******重要******{#至關於print了該變量#}
只寫函數名:至關於函數名(),執行該函數,打印函數返回值
2 深度查詢---->統一都用句點符 .
拓展:不能調有參數的方法
二 模版之過濾器
1語法:{{第一個參數|過濾器名字:第二個參數}}
2經常使用過濾器:(詳細用法見源碼)
1 length 返回列表中元素的個數或字符串長度
2 default 若是值不存在,則使用默認值代替
3 slice 切片操做, 返回列表 # {{ 'asdikfjhih' | slice:':5' }} 返回 ‘asdik’
4 date 格式化日期 {{ ctim|date:'Y-m-d' }}
5 filesizeformat 增長數字的可讀性,轉換結果爲13KB {{ 1024 | filesizeformat }} 返回 1.0KB
6 truncatechars 字符串字符多於指定的字符數量,那麼會被截斷。截斷的字符串將以可翻譯的省略號序列(「...」)結尾
7 truncatewords 將字符串轉換爲省略表達方式 {{ 'This is a pen' | truncatewords:2 }}返回 This is ...
8 safe 單獨的變量咱們能夠經過過濾器「|safe」的方式告訴Django這段代碼是安全的沒必要轉義
9 add 給value加上一個數值 {{ user.age | add:」5」 }}
三 模版之標籤 : {% 標籤 %}
1 for: forloop:對象(裏面有好多東西:parentloop,last,first,counter....)忘記的話, 本身打印一下
empty: 被循環的對象是空,才走它
for循環能夠嵌套,也能夠用if
2 if:
{% if forloop.first %}
<p>第一次的我 </p>
{% elif forloop.last %}
<p>最後的我 </p>
{% else %}
<p>{{ foo }}</p>吧
{% endif %}
3 with:重命名,應用在變量名過長
********都要有結束******{%endif%} {%endfor%} {%enwith%}
四 自定義標籤和過濾器
1 自定義過濾器
1 先app是否是已經在setting中註冊
2 在app下建立一個templatetags(****名字不能變***)的文件夾(模塊)
3 在模塊下建立一個py文件,名字隨意:mytag.py
4 第一步,導入template
from django.template import Library
第二步,定義一個叫register的變量=template.Library()
register = Library()
5 寫一個函數,用@register.filter(name='yyy')裝飾一下(能夠指定別名)
def str_add(str1, str2): #必定要有返回值
# 業務邏輯很複雜
return str1 + str2
6 在模板裏:(新定定義的標籤,過濾器,都要重啓程序)
{% load mytag %}
{{'lqz'|str_add:'nb'}}
**過濾器,能夠用在if判斷
2 自定義標籤:
1-4:前4步,根過濾器的定義徹底同樣
5 只是裝飾器不同
@register.simple_tag()
def add_nb(value):
return value+'nb'
6 在模板裏:(多個參數,以空格區分)
{% load mytag %}
{% add_nb 'lqz'%}
**標籤不能用在if判斷
五 模版導入-->寫了一個好看的組件,能夠複用,
1 寫一個模板
2 在模板中:{% include '模板的名字'%}
六 模板的繼承
1 寫一個母版,留一個可擴展的區域(盒子),能夠留多個盒子(留的越多,可擴展性越高)
{%block 名字%}
能夠寫內容
{%endblock%}
2 在子模板中使用:
{%block 名字%}
子模板的內容
{%endblock 名字%}
七 靜態文件相關
1 寫死靜態文件:<link rel="stylesheet" href="/static/css/mycss.css">
2 使用 static標籤函數:
-{%load static%}
#static返回值,會拼上傳參的路徑
-{% static "傳參"%}
3 使用get_static_prefix 標籤
-{%load static%}
#get_static_prefix返回值是:靜態文件的地址,至關於/static/
-{% get_static_prefix %}css/mycss.csscss