django template 模板渲染的實現
前言
Django 的模板系統(tǒng)是一個強大的工具,它將視圖邏輯與頁面設計分開,使得前后端開發(fā)人員可以在同一項目中高效協作。以下是對 Django 模板渲染功能的詳細解析。
Django 模板系統(tǒng)概述
Django 的模板系統(tǒng)旨在使設計人員能夠編寫 HTML,同時以一種安全和靈活的方式動態(tài)顯示數據。這種分離關注點的設計允許后端開發(fā)人員處理業(yè)務邏輯,而模板專注于數據的展示。
模板文件
位置: 通常,模板文件(.html)存放在名為
templates的目錄下。該目錄可以在應用的目錄結構中,也可以是全局項目中指定的模板目錄。配置: 在
settings.py文件中設置TEMPLATES,Django 查找模板文件的位置。
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',
],
},
},
]
模板語法
變量: 使用雙大括號 {{ }} 包裹變量名以顯示變量的值。
<p>Hello, {{ user.username }}!</p>
過濾器: 用管道符 | 結合過濾器對變量進行格式化或修改。
<p>Current time: {{ current_time|date:"F j, Y, P" }}</p>
Django 自帶許多內置過濾器,如 date, upper, length 等。
標簽: 使用 {% %} 包圍的標簽來實現邏輯操作,控制流或加載模板庫。
{% if user.is_authenticated %}
<p>Welcome back, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
{% for item in item_list %}
<li>{{ item.name }}</li>
{% endfor %}
注釋: 模板注釋不會輸出到生成的 HTML,使用 {# #} 注釋文本。
{# This is a comment #}
模板繼承
Django 支持模板繼承,使得代碼更易維護和復用。
父模板: 通常定義一個基本布局,使用 {% block %} 標簽定義可重寫的區(qū)域。
<!-- base.html -->
<html>
<head>
<title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
<header>{% block header %}{% endblock %}</header>
<main>{% block content %}{% endblock %}</main>
<footer>{% block footer %}Default Footer{% endblock %}</footer>
</body>
</html>
子模板: 繼承基礎模板,并重寫定義的塊。
{% extends "base.html" %}
{% block title %}Page Title{% endblock %}
{% block content %}
<p>This is the page-specific content.</p>
{% endblock %}
包含模板
使用 {% include %} 標簽將一個模板文件包含在另一個模板中,適用于重復出現的頁面片段。
<div class="sidebar">
{% include 'sidebar.html' %}
</div>
上下文處理器
上下文處理器是一個可選的鉤子,用于將特定變量自動添加到每個模板的上下文中。通過修改
TEMPLATES的OPTIONS來注冊。常用的上下文處理器包括
request、static和auth等,這些處理器可以使得模板中訪問全局變量變得更簡便。
安全性
Django 模板系統(tǒng)默認防止跨站腳本攻擊(XSS),對輸出的文本會進行自動轉義。
可以使用
safe過濾器對已知安全的字符串進行手動 unescape。
<p>{{ user_input|safe }}</p>
渲染過程
視圖加載模板: 在視圖函數或類視圖中,使用 render 方法加載和渲染模板。
from django.shortcuts import render
def my_view(request):
return render(request, 'my_template.html', {'key': 'value'})
返回 HttpResponse: 渲染過程生成 HTML,并以 HttpResponse 形式返回給客戶端。
總結
Django 的模板系統(tǒng)通過直觀的語法和強大的功能分離了表現層和業(yè)務邏輯,使得開發(fā)過程更簡潔和易維護。無論是簡單的靜態(tài)展示還是復雜的動態(tài)頁面,Django 的模板都提供了足夠的靈活性和安全性來應對各種需求。通過模板繼承、過濾器和標簽,開發(fā)者可以高效地構建精美的用戶界面并確保代碼的可重用性。
到此這篇關于django template 模板渲染的實現的文章就介紹到這了,更多相關django template 模板渲染內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python?pycharm讀取文件相對路徑與絕對路徑的方法
這篇文章主要給大家介紹了關于Python?pycharm讀取文件相對路徑與絕對路徑的方法,絕對路徑就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進行一級級目錄指向文件,相對路徑就是以當前文件為基準進行一級級目錄指向被引用的資源文件,需要的朋友可以參考下2023-12-12

