1. 程式人生 > >Django web框架之模板

Django web框架之模板

引用 自定義標簽 and lib total http brush safe bar


1 模板:
什麽是模板?
  html+模板語法

  模版包括在使用時會被值替換掉的 變量,和控制模版邏輯的 標簽


2 模板語法:

1 變量:{{}}

深度查詢: 通過句點符號 .

過濾器 filter

{{var|filter_name}}

  


2 標簽: {% tag %}

for
if else

for標簽

遍歷每一個元素:

{% for person in person_list %}
    <p>{{ person.name }}</p>
{% endfor %}

  

可以利用{% for obj in list reversed %}

反向完成循環。

遍歷一個字典:

{% for key,val in dic.items %}
    <p>{{ key }}:{{ val }}</p>
{% endfor %}

for ... empty

for 標簽帶有一個可選的{% empty %} 從句,以便在給出的組是空的或者沒有被找到時,可以有所操作。

{% for person in person_list %}
    <p>{{ person.name }}</p>

{% empty %}
    <p>sorry,no person here</p>
{% endfor %}

if 標簽

{% if %}會對一個變量求值,如果它的值是“True”(存在、不為空、且不是boolean類型的false值),對應的內容塊會輸出。

技術分享
{% if num > 100 or num < 0 %}
    <p>無效</p>
{% elif num > 80 and num < 100 %}
    <p>優秀</p>
{% else %}
    <p>湊活吧</p>
{% endif %}
技術分享

with

使用一個簡單地名字緩存一個復雜的變量,當你需要使用一個“昂貴的”方法(比如訪問數據庫)很多次的時候是非常有用的

例如:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

csrf_token

這個標簽用於跨站請求偽造保護

3 自定義過濾器和標簽

步驟:
1 在settings中的INSTALLED_APPS,是否有當前應用

2 在應用中創建一個templatetags

3 在templatetags中創建py文件:mytag.py

4 在mytag.py中:
引入:
from django import template
from django.utils.safestring import mark_safe

register = template.Library() #register的名字是固定的,不可改變

5 定義過濾器和標簽
@register.filter
def multi(x,y):
return x*y


@register.simple_tag
def multiTag(x,y,z):
return x*y*z

6 在引用模板中導入:{% load myTag %}

7 調用:
過濾器: {{var|filter_name:參數}} # 參數只能是一個

標簽: {% simple_tag 參數1 參數2 ... %}

 

對比過濾器與自定義標簽的使用:
過濾器函數的參數只能有兩個,自定義標簽無參數限制
過濾器可以與邏輯標簽共同使用,比如if標簽。自定義標簽不可以。

Django web框架之模板