1. 程式人生 > >DTL語言學習(一)模板變數和{% if %}標籤的使用

DTL語言學習(一)模板變數和{% if %}標籤的使用

目前市面上有非常多的模板系統,其中最知名最好用的就是DTL和Jinja2。

DTL是Django Template Language三個單詞的縮寫,也就是Django自帶的模板語言。當然也可以配置Django支援Jinja2等其他模板引擎,但是作為Django內建的模板語言,DTL能和Django達到無縫銜接而不會產生一些不相容的情況。因此使用Django一般都使用DTL模板系統。

DTL與普通的HTML檔案的區別:

DTL模板是一種帶有特殊語法的HTML檔案,這個HTML檔案可以被Django編譯,可以傳遞引數進去,實現資料動態化。在編譯完成後,生成一個普通的HTML檔案,然後傳送給客戶端。

模板變數的使用

首先新建一個專案,因為是學習DTL語言,就不用新建一個app了,直接在和settings.py同級目錄下新建一個views.py的檔案。

  1. 如果是用pycharm建立的專案,那麼在app的同級目錄下Django就自動給我們建立好了一個templates的目錄。並且在settings.py中也將模板路徑配置好了的
  2. 如果時用命令視窗新建的專案,則需要手動在app的同級目錄下建立一個templates的資料夾。並且需要去settings.py中配置好templates模板的路徑。在settings.py中TEMPLATES這個列表中的字典中key‘DIRS’
    中新增路徑。
'DIRS': [os.path.join(BASE_DIR, 'templates')]

注意: 示例程式碼是將配置的模板路徑是在和app的同級目錄下,如果新建在其他位置,請自行修改配置路徑。

然後在templates資料夾中新建一個 'index.html’的檔案
這樣我們需要用到的檔案都建立好了。

首先進入views.py檔案中編寫程式碼:

from django.shortcuts import render

def index(request):
    str = '我是變數'
    return render(request,'index.html'
,{'str':str})

然後去urls.py中配置url

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index),
]

然後切換至templates中的index.html檔案中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DTL 語言</title>
</head>
<body>

{{ str }}

</body>
</html>

然後執行專案,就可以檢視效果了。
只需要修改views.py檔案中index函式中的str的值,我們就能改變傳遞到index.html中的值。

{% if %}標籤的使用

我們在views.py中的index函式中新建一個變數age
並且將它傳遞至index.html中

def index(request):
    str = '我是變數'
    age = 18
    return render(request,'index.html',{'str':str,'age':age})

然後我們在index.html中使用{% if %}標籤進行判斷。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DTL 語言</title>
</head>
<body>

{{ str }}

{% if age < 18 %}
    <p>你還沒有成年</p>
{% elif age == 18 %}
    <p>你剛剛成年</p>
{% else %}
    <p>你已經成年了</p>
{% endif %}

</body>
</html>

然後執行專案,輸入網址,就能夠檢視效果了,可以改變age的值來改變index.html中顯示的文字。
注意:

  1. 所有的標籤都是在{%%}之間。
  2. if標籤有閉合標籤。就是{% endif %}
  3. if標籤的判斷運算子,就跟python中的判斷運算子是一樣的。==、!=、<、<=、>、>=、in、not in、is、is not這些都可以使用。
  4. 還可以使用elif以及else等標籤。