Django - 模板進階使用方式

本節主要講Django模板中的循環,條件判斷,常用的標籤,過濾器的使用。
  1. 列表,字典,類別的實例的使用
  2. 循環:迭代顯示列表,字典等中的內容
  3. 條件判斷
    判斷是否顯示該內容,比如判斷是手機訪問,還是電腦訪問,給出不一樣的代碼。
  4. 標籤
    for,if這樣的功能都是標籤。
  5. 過濾器
    管道符號後面的功能,比如{{ var | length }},求變量長度的length就是一個過濾器。

實例一,字串

# -*- coding: utf-8 -*-
from django.shortcuts import render
 
 
def home(request):
    mystr = u"哈囉"
    return render(request, 'home.html', {'mystr': mystr})
在視圖中我們傳遞了一個字符串名稱是string 到模板home.html,在模板中這樣使用它:
home.html
{{ mystr }}

實例二,List

def home (request):
  ClassList=["Java","PHP","Python","Django"]
  return render(request,'home.html',{'ClassList':ClassList})
home.html
列表:
{% for i in ClassList %}
{{ i }}
{% endfor %}

小提示:

一般的變量之類的用 {{ }}(變量),
功能類的,比如循環,條件判斷是用 {% %}(標籤)

實例三,字典

def home(request):
    info_dict = {'site': u'KT Lollipop', 'content': u'線上開放式課程'}
    return render(request, 'home.html', {'info_dict': info_dict})
home.html
站點:{{ info_dict.site }} 内容:{{ info_dict.content }}
也可以這樣遍歷字典:
{% for key, value in info_dict.items %}
    {{ key }}: {{ value }}
{% endfor %}

實例四,更多 for 操作:

def home(request):
    # 0~99的 List
    List = map(str, range(100))
    return render(request, 'home.html', {'List': List})
結果:
遍歷到了最後一個逗點
所以加入forloop.last 判斷,最後一項不加入逗號
{% for item in List %}
    {{ item }}{% if not forloop.last %},{% endif %} 
{% endfor %}
for循環常用功能:
變量描述
forloop.counter索引從1 開始算
forloop.counter0索引從0 開始算
forloop.revcounter索引從最大長度到 1
forloop.revcounter0索引從最大長度到 0
forloop.first當遍歷的元素為第一項時為真
forloop.last當遍歷的元素為最後一項時為真 |
forloop.parentloop用在嵌套的for 循環中,獲取上一層for 循環的forloop

for 迴圈當列表為空值時用 empty

    {% for athlete in athlete_list %}
  • {{ athlete.name }}
  • {% empty %}
  • 資料為空
  • {% endfor %}

實例五,模板獲取 view 對應的網址:

def add(request, a, b):
    c = int(a) + int(b)
    return HttpResponse(str(c))
urlpatterns = patterns('',
    url(r'^add/(\d+)/(\d+)/$', 'app.views.add', name='add'),
)
template html
{% url 'add' 4 5 %}
這樣網址上就會顯示出:/add/4/5/ 這個網址,
假如我們以後修改 urls.py 中的
r'^add/(\d+)/(\d+)/$'
#改成
r'^ktshow/(\d+)/(\d+)/$'
網址則會變成/ktshow/4/5/

實例六,模板中的邏輯操作

{% if var >= 90 %}
成绩高於 90 分,評等:A
{% elif var >= 80 %}
成绩高於 80 分,評等:B
{% elif var >= 70 %}
成绩高於 70 分,評等:C
{% elif var >= 60 %}
成绩高於 60 分,評等:D
{% else %}
成绩低於 60 分,評等:F
{% endif %}
and, or, not, in, not in 也可以在模板中使用
{% if num <= 100 and num >= 0 %}
num 在0100之間
{% else %}
資料不在這之間
{% endif %}
判斷’XXXXXX’ 是否在一個列表變量 List 中:
{% if 'XXXXXX' in List %}
在名單中
{% endif %}

實例七,獲取當前網址,當前用戶等

獲取當前用戶

{{ request.user }}
應用範例:判斷是否登入
{% if request.user.is_authenticated %}
    {{ request.user.username }},您好!
{% else %}
    請登入,這裡放登入連接
{% endif %}

獲取當前網址

{{ request.path }}

參考資料

這個網誌中的熱門文章

Android Studio 歷代版本下載點

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)