elasticsearch入門系列">elasticsearch入門系列
713
2022-05-30
前言
模板是一個文本,用于分離文檔的表現形式和內容
提示:以下是本篇文章正文內容,下面案例可供參考
一、Django自帶模板
1.配置
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此處修改 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
2.定義模板
在templates目錄中新建一個模板文件,如index.html
3.模板渲染
調用模板分為兩步驟:
找到模板 loader.get_template(模板文件在模板目錄中的相對路徑) -> 返回模板對象
渲染模板 模板對象.render(context=None, request=None) -> 返回渲染后的html文本字符串
context 為模板變量字典,默認值為None request 為請求對象,默認值為None
例如,定義一個視圖
from django.http import HttpResponse from django.template import loader def index(request): # 1.獲取模板 template=loader.get_template('index.html') context={'city': '北京'} # 2.渲染模板 return HttpResponse(template.render(context))
Django提供了一個函數render可以簡寫上述代碼。
render(request對象, 模板文件路徑, 模板數據字典)
from django.shortcuts import render def index(request): context={'city': '北京'} return render(request,'index.html',context)
4.模板語法
4.1 模板變量
變量名必須由字母、數字、下劃線(不能以下劃線開頭)和點組成。
語法如下:
{{變量}}
模板變量可以使python的內建類型,也可以是對象。
def index(request): context = { 'city': '北京', 'adict': { 'name': '西游記', 'author': '吳承恩' }, 'alist': [1, 2, 3, 4, 5] } return render(request, 'index.html', context)
4.2 模板語句
1)for循環:
2)if條件:
比較運算符如下:
== != < > <= >=
布爾運算符如下:
and or not
注意:運算符左右兩側不能緊挨變量或常量,必須有空格。
4.3 注釋
1)單行注釋語法如下:
2)多行注釋使用comment標簽,語法如下:
5.過濾器
語法如下:
使用管道符號|來應用過濾器,用于進行計算、轉換操作,可以使用在變量、標簽中。
如果過濾器需要參數,則使用冒號:傳遞參數。
變量|過濾器:參數
列舉幾個如下:
safe,禁用轉義,告訴模板這個變量是安全的,可以解釋執行
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秒"
6.模板繼承
模板繼承和類的繼承含義是一樣的,主要是為了提高代碼重用,減輕開發人員的工作量。
父模板
如果發現在多個模板中某些內容相同,那就應該把這段內容定義到父模板中。
標簽block:用于在父模板中預留區域,留給子模板填充差異性的內容,名字不能相同。 為了更好的可讀性,建議給endblock標簽寫上名字,這個名字與對應的block名字相同。父模板中也可以使用上下文中傳遞過來的數據。
子模板
標簽extends:繼承,寫在子模板文件的第一行。
子模版不用填充父模版中的所有預留區域,如果子模版沒有填充,則使用父模版定義的默認值。
填充父模板中指定名稱的預留區域。
5G教育 Django Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。