網站首頁 編程語言 正文
前言
模板是 Django MVT 結構的第三個也是最重要的部分。Django中的模板基本上是用HTML,CSS和Javascript編寫在.html文件中的。Django框架有效地處理和生成對最終用戶可見的動態HTML網頁。Django主要使用后端,因此,為了提供前端并為我們的網站提供布局,我們使用模板。根據我們的需求,有兩種方法可以將模板添加到我們的網站。
我們可以使用單個模板目錄,該目錄將分布在整個項目中。
對于我們項目的每個應用程序,我們可以創建一個不同的模板目錄。
對于我們當前的項目,為了簡單起見,我們將創建一個將分布在整個項目中的單個模板目錄。應用級模板通常用于大型項目,或者我們希望為網頁的每個組件提供不同的布局。
配置
Django模板可以在app_name/設置中配置.py,
TEMPLATES = [
{
# 要使用的模板后端
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 模板目錄
'DIRS': [],
'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',
],
},
},
]
使用 Django 模板
如何使用示例項目在 Django 中使用模板的插圖。模板不僅顯示靜態數據,還顯示通過上下文字典連接到應用程序的不同數據庫的數據。考慮一個名為極客forgeeks的項目,它有一個名為極客的應用程序。
要呈現模板,需要一個視圖和一個映射到該視圖的URL。讓我們首先在極客/視圖中創建一個視圖.py,
# 從 django 導入 Http 響應
from django.shortcuts import render
# 創建函數
def geeks_view(request):
# 創建字典以將數據傳遞到模板
context ={
"data":"Gfg is the best",
"list":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
# 使用模板和上下文返回響應
return render(request, "geeks.html", context)
現在我們需要映射一個URL來呈現這個視圖,
from django.urls import path
from .views import geeks_view
urlpatterns = [
path('', geeks_view),
]
最后在 templates/geeks.html 中創建一個模板,
<!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模板提供的最重要的設施之一。Django模板是使用Django模板語言標記的文本文檔或Python字符串。模板引擎可以識別和解釋某些構造。主要的是變量和標簽。正如我們在上面的示例中用于循環一樣,我們將其用作標記。同樣,我們可以使用各種其他條件,例如如果,否則,如果-否則,空等。Django模板語言的主要特征是變量,標簽,過濾器和評論。
變量
變量從上下文中輸出一個值,該值是一個類似于字典的對象,它將鍵映射到值。我們從視圖發送的上下文對象可以使用Django模板的變量在模板中訪問。
語法
{{ variable_name }}
示例
變量被 {{ 和 }} 括起來,如下所示:
My first name is {{ first_name }}. My last name is {{ last_name }}.
在上下文 {'first_name: “hai”、“last_name”: “yong”} 的情況下,此模板將呈現為:
My first name is hai. My last name is yong.
標簽
標記在呈現過程中提供任意邏輯。例如,標記可以輸出內容,用作控制結構,例如“if”語句或“for”循環,從數據庫中獲取內容,甚至允許訪問其他模板標記。
語法
{% tag_name %}
例
標記由 {% 和 %} 括起來,如下所示:
{% csrf_token %}
大多數標簽接受參數,例如:
{% cycle 'odd' 'even' %}
? | 常用標簽 | ? |
---|---|---|
Comment | cycle | extends |
if | for loop | for … empty loop |
BooleanOperators | firstof | include |
lorem | now | url |
過濾器
Django模板引擎提供用于轉換變量和標簽參數值的過濾器。我們已經討論了主要的Django模板標簽。標簽不能修改變量的值,而過濾器可用于增加變量的值或根據自己的需要修改變量的值。
語法
{{ variable_name | filter_name }}
過濾器可以“鏈接”。一個篩選器的輸出將應用于下一個篩選器。{{ text|scape|換行 }} 是一種常用的習語,用于轉義文本內容,然后將換行符轉換為
標記。
例
{{ 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 |
評論
模板忽略 {% 注釋 %} 和 {% 結束注釋 %} 之間的所有內容。可以在第一個 標記中插入一個可選注釋。例如,這在注釋掉代碼以記錄代碼被禁用的原因時很有用。
語法
{% comment 'comment_name' %}
{% endcomment %}
例:
{% comment "Optional note" %}
Commented out text with {{ create_date|date:"c" }}
{% endcomment %}
模板繼承
Django模板引擎中最強大,因此最復雜的部分是模板繼承。模板繼承允許您構建一個基本的“骨架”模板,其中包含站點的所有公共元素,并定義子模板可以覆蓋的塊。擴展標簽用于在 Django 中繼承模板。需要一遍又一遍地重復相同的代碼。使用擴展,我們可以繼承模板和變量。
語法
{% extends 'template_name.html' %}
示例 :
假定以下目錄結構:
dir1/
template.html
base2.html
my/
base3.html
base1.html
在模板.html中,以下路徑將有效:
{% extends "./base2.html" %}
{% extends "../base1.html" %}
{% extends "./my/base3.html" %}
原文鏈接:https://juejin.cn/post/7155304668329934878
相關推薦
- 2022-09-17 Pandas數據類型轉換df.astype()及數據類型查看df.dtypes的使用_python
- 2022-03-13 .Net6開發winform程序使用依賴注入_C#教程
- 2022-03-23 Asp.Net?Core?使用Monaco?Editor?實現代碼編輯器功能_實用技巧
- 2022-04-09 Python實現簡易的限流器介紹_python
- 2022-10-23 Android?Handler源碼深入探究_Android
- 2022-10-31 Golang?template?包基本原理分析_Golang
- 2022-12-08 C++中cout輸出中文信息亂碼問題及解決_C 語言
- 2022-07-12 解決錯誤:Cannot resolve symbol ‘JdbcTemplate‘
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支