Django-模板語法+反向解析url

1. 模板變量

變量名必須由字母、數字、下劃線(不能如下劃線開頭)和點組成,語法以下:php

{{ 變量 }}

模板變量可使python的內建類型,也能夠是對象。html

def index(request): context = { 'name': 'django', 'my_list': ['python', 'java', 'php', 'c/c++'], 'my_dict': { 'name': 'python', 'age': 20, 'gender': '男', } } return render(request, 'index.html', context) 
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>{{ name }}</h1> <h1>{{ my_list }}</h1> <h1>{{ my_list.0 }}</h1> <!-- 注意列表的取值方法 --> <h1>{{ my_dict }}</h1> <h1>{{ my_dict.name }}</h1> <!-- 注意字典的取值方法 --> </body> </html> 

2. 模板語句

1)for循環:java

{% for item in 列表 %}
    {{forloop.counter}}  <1-- 表示當前是第幾回循環,從1開始 -->
    {{forloop.counter0}}  <!-- 表示當前是第幾回循環,從0開始 -->
{% empty %} 
    列表爲空或不存在時執行此邏輯
{% endfor %}

2)if條件:python

{% if ... %} 邏輯1 {% elif ... %} 邏輯2 {% else %} 邏輯3 {% endif %} 

比較運算符以下:c++

==
!=
<
>
<=
>=

布爾運算符以下:數據庫

and or not 

注意:運算符左右兩側必須有空格。django

{% if a == 1 %} # 正確 {% if a==1 %} # 錯誤

with

使用一個簡單地名字緩存一個複雜的變量,當你須要使用一個「昂貴的」方法(好比訪問數據庫)不少次的時候是很是有用的緩存

例如:oop

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

3. 過濾器

語法以下:ui

  • 使用管道符號|來應用過濾器,用於進行計算、轉換操做,可使用在變量、標籤中。
  • 若是過濾器須要參數,則使用冒號:傳遞參數。

    變量|過濾器:參數

列舉幾個以下:

  • safe,禁用html轉義(顯示html標籤樣式,而不是字符串)
  • length,長度,返回字符串包含字符的個數,或列表、元組、字典的元素個數。
  • default,默認值,若是變量不存在時則返回默認值。

    data|default:'默認值' 
  • date,日期,用於對日期類型的值進行字符串格式化,經常使用的格式化字符以下:

    • Y表示年,格式爲4位,y表示兩位的年。
    • m表示月,格式爲01,02,12等。
    • d表示日, 格式爲01,02等。
    • j表示日,格式爲1,2等。
    • H表示時,24進制,h表示12進制的時。
    • i表示分,爲0-59。
    • s表示秒,爲0-59。
    value|date:"Y年m月j日  H時i分s秒"
  • Django模板--->http://python.usyiyi.cn/translate/django_182/ref/templates/builtins.html#ref-templates-builtins-tags

4. 註釋

1)單行註釋語法以下:

{#...#} 

2)多行註釋使用comment標籤,語法以下:

{% comment %}
...
{% endcomment %}

5. 模板繼承

  • 模板繼承和類的繼承含義是同樣的
  • 可使用模板繼承來複用父模板,提升代碼的複用性,減輕開發人員的工做量。
  • 能夠經過定義 block ,實現子模板對父模塊內容的重寫

父模板

若是發如今多個模板中某些內容相同,那就可使用block標籤把這段內容定義到父模板中。

{% block 塊名稱 %}
    預留區域,能夠編寫默認內容,也能夠沒有默認內容
{% endblock %}

子模板

  1. 使用extends標籤繼承父模板,寫在子模板文件的第一行。

    {% extends "父模板路徑" %} 
  2. 對有須要的block進行重寫:

    • 不用重寫父模版中的全部block,若是子模版沒有重寫,則使用父模版定義的默認值。
    • 可使用 block.super 來包含父模板的塊中定義的內容,以下

      {% block 名稱 %}
            子模板的內容
            {{ block.super }}    顯示父模板中block的內容
        {% endblock %}
相關文章
相關標籤/搜索