1. 程式人生 > >Django基礎模板層(75-76)

Django基礎模板層(75-76)

his oca 參數 字符數 lin 復雜 轉換 返回 index

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.css

Django基礎模板層(75-76)