Python Django教程之模板的使用
前言
模板是 Django MVT 結(jié)構(gòu)的第三個(gè)也是最重要的部分。Django中的模板基本上是用HTML,CSS和Javascript編寫在.html文件中的。Django框架有效地處理和生成對(duì)最終用戶可見的動(dòng)態(tài)HTML網(wǎng)頁。Django主要使用后端,因此,為了提供前端并為我們的網(wǎng)站提供布局,我們使用模板。根據(jù)我們的需求,有兩種方法可以將模板添加到我們的網(wǎng)站。
我們可以使用單個(gè)模板目錄,該目錄將分布在整個(gè)項(xiàng)目中。
對(duì)于我們項(xiàng)目的每個(gè)應(yīng)用程序,我們可以創(chuàng)建一個(gè)不同的模板目錄。
對(duì)于我們當(dāng)前的項(xiàng)目,為了簡(jiǎn)單起見,我們將創(chuàng)建一個(gè)將分布在整個(gè)項(xiàng)目中的單個(gè)模板目錄。應(yīng)用級(jí)模板通常用于大型項(xiàng)目,或者我們希望為網(wǎng)頁的每個(gè)組件提供不同的布局。
配置
Django模板可以在app_name/設(shè)置中配置.py,
TEMPLATES = [ { # 要使用的模板后端 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 模板目錄 'DIRS': [], 'APP_DIRS': True, # 要配置的選項(xiàng) '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', ], }, }, ]
使用 Django 模板
如何使用示例項(xiàng)目在 Django 中使用模板的插圖。模板不僅顯示靜態(tài)數(shù)據(jù),還顯示通過上下文字典連接到應(yīng)用程序的不同數(shù)據(jù)庫的數(shù)據(jù)。考慮一個(gè)名為極客forgeeks的項(xiàng)目,它有一個(gè)名為極客的應(yīng)用程序。
要呈現(xiàn)模板,需要一個(gè)視圖和一個(gè)映射到該視圖的URL。讓我們首先在極客/視圖中創(chuàng)建一個(gè)視圖.py,
# 從 django 導(dǎo)入 Http 響應(yīng) from django.shortcuts import render # 創(chuàng)建函數(shù) def geeks_view(request): # 創(chuàng)建字典以將數(shù)據(jù)傳遞到模板 context ={ "data":"Gfg is the best", "list":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } # 使用模板和上下文返回響應(yīng) return render(request, "geeks.html", context)
現(xiàn)在我們需要映射一個(gè)URL來呈現(xiàn)這個(gè)視圖,
from django.urls import path from .views import geeks_view urlpatterns = [ path('', geeks_view), ]
最后在 templates/geeks.html 中創(chuàng)建一個(gè)模板,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Homepage</title> </head> <body> <h1>Welcome to haiyong.site</h1> <p> Data is {{ data }}</p> <h4>List is </h4> <ul> {% for i in list %} <li>{{ i }}</li> {% endfor %} </body> </html>
Django 模板語言
這是Django模板提供的最重要的設(shè)施之一。Django模板是使用Django模板語言標(biāo)記的文本文檔或Python字符串。模板引擎可以識(shí)別和解釋某些構(gòu)造。主要的是變量和標(biāo)簽。正如我們?cè)谏厦娴氖纠杏糜谘h(huán)一樣,我們將其用作標(biāo)記。同樣,我們可以使用各種其他條件,例如如果,否則,如果-否則,空等。Django模板語言的主要特征是變量,標(biāo)簽,過濾器和評(píng)論。
變量
變量從上下文中輸出一個(gè)值,該值是一個(gè)類似于字典的對(duì)象,它將鍵映射到值。我們從視圖發(fā)送的上下文對(duì)象可以使用Django模板的變量在模板中訪問。
語法
{{ variable_name }}
示例
變量被 {{ 和 }} 括起來,如下所示:
My first name is {{ first_name }}. My last name is {{ last_name }}.
在上下文 {'first_name: “hai”、“last_name”: “yong”} 的情況下,此模板將呈現(xiàn)為:
My first name is hai. My last name is yong.
標(biāo)簽
標(biāo)記在呈現(xiàn)過程中提供任意邏輯。例如,標(biāo)記可以輸出內(nèi)容,用作控制結(jié)構(gòu),例如“if”語句或“for”循環(huán),從數(shù)據(jù)庫中獲取內(nèi)容,甚至允許訪問其他模板標(biāo)記。
語法
{% tag_name %}
例
標(biāo)記由 {% 和 %} 括起來,如下所示:
{% csrf_token %}
大多數(shù)標(biāo)簽接受參數(shù),例如:
{% cycle 'odd' 'even' %}
常用標(biāo)簽 | ||
---|---|---|
Comment | cycle | extends |
if | for loop | for … empty loop |
BooleanOperators | firstof | include |
lorem | now | url |
過濾器
Django模板引擎提供用于轉(zhuǎn)換變量和標(biāo)簽參數(shù)值的過濾器。我們已經(jīng)討論了主要的Django模板標(biāo)簽。標(biāo)簽不能修改變量的值,而過濾器可用于增加變量的值或根據(jù)自己的需要修改變量的值。
語法
{{ variable_name | filter_name }}
過濾器可以“鏈接”。一個(gè)篩選器的輸出將應(yīng)用于下一個(gè)篩選器。{{ text|scape|換行 }} 是一種常用的習(xí)語,用于轉(zhuǎn)義文本內(nèi)容,然后將換行符轉(zhuǎn)換為
標(biāo)記。
例
{{ value | length }}
如果值為 ['a'、'b'、'c'、'd'] ,則輸出將為 4。
主要模板過濾器 | ||
---|---|---|
add | addslashes | capfirst |
center | cut | date |
default | dictsort | divisibleby |
escape | filesizefodivisible byrmat | first |
join | last | length |
line numbers | lower | make_list |
random | slice | slugify |
time | timesince | title |
unordered_list | upper | wordcount |
評(píng)論
模板忽略 {% 注釋 %} 和 {% 結(jié)束注釋 %} 之間的所有內(nèi)容。可以在第一個(gè) 標(biāo)記中插入一個(gè)可選注釋。例如,這在注釋掉代碼以記錄代碼被禁用的原因時(shí)很有用。
語法
{% comment 'comment_name' %} {% endcomment %}
例:
{% comment "Optional note" %} Commented out text with {{ create_date|date:"c" }} {% endcomment %}
模板繼承
Django模板引擎中最強(qiáng)大,因此最復(fù)雜的部分是模板繼承。模板繼承允許您構(gòu)建一個(gè)基本的“骨架”模板,其中包含站點(diǎn)的所有公共元素,并定義子模板可以覆蓋的塊。擴(kuò)展標(biāo)簽用于在 Django 中繼承模板。需要一遍又一遍地重復(fù)相同的代碼。使用擴(kuò)展,我們可以繼承模板和變量。
語法
{% extends 'template_name.html' %}
示例 :
假定以下目錄結(jié)構(gòu):
dir1/ template.html base2.html my/ base3.html base1.html
在模板.html中,以下路徑將有效:
{% extends "./base2.html" %} {% extends "../base1.html" %} {% extends "./my/base3.html" %}
以上就是Python Django教程之模板的使用的詳細(xì)內(nèi)容,更多關(guān)于Python Django模板的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Github?Copilot的申請(qǐng)以及在Pycharm的配置與使用詳解
GitHub在聯(lián)合OpenAI推出了一款"GitHub Copilot"工具,可以根據(jù)上下文自動(dòng)寫代碼,下面這篇文章主要給大家介紹了關(guān)于Github?Copilot的申請(qǐng)以及在Pycharm的配置與使用的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Python反爬機(jī)制-驗(yàn)證碼功能的具體實(shí)現(xiàn)過程
Tesseract-OCR是一個(gè)免費(fèi)、開源的OCR引擎,通過該引擎可以識(shí)別圖片中的驗(yàn)證碼,這篇文章主要介紹了Python反爬機(jī)制-驗(yàn)證碼的示例代碼,需要的朋友可以參考下2022-02-02Python操作mysql數(shù)據(jù)庫實(shí)現(xiàn)增刪查改功能的方法
這篇文章主要介紹了Python操作mysql數(shù)據(jù)庫實(shí)現(xiàn)增刪查改功能的方法,涉及Python針對(duì)mysql數(shù)據(jù)庫的連接、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01keras的get_value運(yùn)行越來越慢的解決方案
這篇文章主要介紹了keras的get_value運(yùn)行越來越慢的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05django使用xlwt導(dǎo)出excel文件實(shí)例代碼
這篇文章主要介紹了django使用xlwt導(dǎo)出excel文件實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02python實(shí)現(xiàn)可下載音樂的音樂播放器
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)可下載音樂的音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02Python爬蟲入門案例之回車桌面壁紙網(wǎng)美女圖片采集
讀萬卷書不如行萬里路,學(xué)的扎不扎實(shí)要通過實(shí)戰(zhàn)才能看出來,今天小編給大家?guī)硪粋€(gè)python爬蟲案例,采集回車桌面網(wǎng)站的美女圖片,大家可以在過程中查缺補(bǔ)漏,看看自己掌握程度怎么樣2021-10-10