Python 全棧體系【三階】(二)

第一章 Django

五、模板

1. 概述

Django中的模板是指可以動態生成任何基于文本格式文件的技術(如HTMLCSS等)。

Django中內置了自己的模板系統,稱為DTL(Django Template Language), Django模板語言

2. 配置

settings.py中關于模板的配置如下:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',# 指定模板文件存儲的位置'DIRS': [ 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',],},},
]

3. 渲染模板

Django的模板系統中,可通過render()函數來完成渲染模板的功能。

其語法結構是:

from django.shortcuts import renderrender(request,template_name,content=None,content_type=None,status=None)
  • request代表用于生成此響應的請求對象
  • template_name代表要渲染的模板文件的名稱
  • content代表要傳遞到模板的數據形成的數據字典
  • content_type代表模板文件的MIME類型,默認為text/html
  • status代表響應的狀態碼,默認為200

render()函數返回HttpResponse對象,是更加簡潔的輸出。

六、DTL

DTL中的語法涉及四個部分:

  • 注釋 – 注釋
  • 變量 – 變量在模板被執行時將被替換為實際值 – {{ … }}
  • 標簽 – 用于控制模板邏輯 {% … %}
  • 過濾器 – 用于轉換變量或標簽的值

1. 變量

DTL中的變量通過雙花括號進行訪問:

{{ variable }}
{{ variable.key }}
{{ variable.index }}
{{ variable.property }}

views.py的代碼如下:

def variable(request):username = 'Tom'age = 23sex = Truescore = {'chinese':128,'math':149,'english':122}friends = ['John','Rose','Frank','Ben']return render(request,'variable.html',locals())

variable.html的代碼如下:

<body><h1>Variable</h1><p>username:{{ username }}</p><p>age:{{ age }}</p><p>sex:{{ sex }}</p><p>chinese:{{ score.chinese }}</p><p>math:{{ score.math }}</p><p>english:{{ score.english }}</p><p>{{ friends.0 }},{{ friends.1 }},{{ friends.2 }},{{ friends.3 }}</p></body>

2. 標簽

2.1 for

for標簽用于遍歷列表或字典,語法結構是:

{% for iterate_value in sequence %}......
{% endfor %}{% for iterate_value in sequence %}......
{% empty%}......
{% endfor %}

for循環中內置了一組變量供用戶使用:

變量描述
forloop.counter循環記數器,從1開始
forloop.counter0循環記數器,從0開始
forloop.revcounter反向循環記數器,最后一個為1
forloop.revcounter0反向循環記數器,最后一個為0
forloop.first當前循環為第一個時,該變量值為True
forloop.last當前循環為最后一個時,該變量值為True

views.py的代碼如下:

def forloop(request):books = [{'bookname': '孫子兵法大全集(超值金版)','price': 18.4,'publishing': '新世界出版社','category': '歷史'},{'bookname': '甲骨文叢書·拿破侖大帝(全2冊) ','price': 119.5,'publishing': '中信出版集團','category': '傳記'},{'bookname': 'JavaScript DOM編程藝術(第2版)','price': 42.70,'publishing': '人民郵電出版社','category': '計算機'},{'bookname': '精通iOS開發 第8版','price': 102.20,'publishing': '人民郵電出版社','category': '計算機'},{'bookname': 'UNIX網絡編程 卷1 套接字聯網API(第3版)','price': 102.9,'publishing': '人民郵電出版社','category': '計算機'},{'bookname': '曾國藩的正面與側面:1+2(套裝共兩冊)','price': 59.30,'publishing': '岳麓書社','category': '傳記'},{'bookname': '普京傳:不可替代的俄羅斯硬漢 [Mr.Putin: Operative In The Kremlin]  ','price': 39,'publishing': '紅旗出版社','category': '傳記'},]context = {'books':books}return render(request,'forloop.html',context)

forloop.html的代碼如下:

<table width="900" cellpadding="10" celspacing="0" border="1"><tr><td>序號</td><td>書名</td><td>價格</td><td>出版社</td><td>分類</td></tr>{% for book in books %}<tr><td>{{ forloop.counter }}</td><td>{{ book.bookname }}</td><td>{{ book.price }}</td><td>{{ book.publishing }}</td><td>{{ book.category }}</td></tr>{% endfor %}</table>
2.2 cycle

在每次遇到cycle標記時,都會產生一個參數。第一次產生第一個參數,第二次產生第二個參數,依次類推。一旦用盡所有參數,再次循環時則產生第一個參數。其語法結構是:

{% cycle 'value1' 'value2' 'value3' '...'%}
2.3 if
{% if condition %}...
{% endif %}或者{% if condition %}...
{% else %}...
{% endif %}或者{% if condition %}...
{% elif condition %}...
{% elif condition %}...
{% else %}...
{% endif %}
2.4 templatetag

基本語法結構是:

{% templatetag templatebit %}
模板位(templatebit)說明
openblock{%
closeblock%}
openvariable{{
closevariable}}
opencomment{#
closecomment#}
2.5 verbatim

verbatim標簽用于告訴DTL停止渲染此標簽內的內容,其語法是:

{% verbatim%}...
{% endverbatim %}
2.6 url

url標簽用于近回與指定路由和可選參數相匹配的絕對路徑引用(不包括域名),其格式為:

{% url 'route_name' arg1 arg2 .. %}
2.7 include

include標簽用于在一個模板文件中包含另外一個模板文件,其語法結構是:

{% include 'filename' %}
2.8 csrf_token

csrf_token稱為令牌標簽,其作用是為了防止跨域請求偽造,其原理是表單內添加一個隱藏域,其值為加密信息,在表單POST提交時將與服務器產生的加密信息進行匹配,匹配成功則意味合法用戶。

{% csrf_token %}

3. 過濾器

過濾器用于轉換變量或標簽參數的值,其語法結構是:

{{ value | filter}}
3.1 safe

safe用于標記一個字符串在輸出前不需要對HTML標記進行轉義,語法結構是:

{{ value | safe }}
3.2 truncatechars

用于完成字符串的截取,其語法結構是:

{{ value | truncatechars:長度 }}
3.3 yesno

True,FalseNone(可選)值映射到以英文逗號分隔的數據,其結構為:

{{ value | yesno:"True時的值,False時的值,None時的值"}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42098.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何將資源前端通過 Docker 部署到遠程服務器

作為一個程序員&#xff0c;在開發過程中&#xff0c;經常會遇到項目部署的問題&#xff0c;在現在本就不穩定的大環境下&#xff0c;前端開發也需要掌握部署技能&#xff0c;來提高自己的生存力&#xff0c;今天就詳細說一下如何把一個前端資源放到遠程服務器上面通過docker部…

紫外線芯片殺菌燈問題

1.265nm深紫外光子能量是多少 504kj/mol 2.紫外光分解有害物質的原理是什么&#xff1f; 通過紫外光分子鍵打斷有害物質的分子鍵&#xff0c;使其分解成co2和H2o等無害物質 3.紫外光殺菌的原理是什么&#xff1f; 通過特定波長的紫外光照射&#xff0c;破壞和改變微生物的…

【網絡協議】PIM

PIM 1 基本概念 PIM&#xff08;Protocol Independent Multicast&#xff09;協議&#xff0c;即協議無關組播協議&#xff0c;是一種組播路由協議&#xff0c;其特點是不依賴于某一特定的單播路由協議&#xff0c;而是可以利用任意單播路由協議建立的單播路由表完成RPF&…

【Python】不小心卸載pip后(手動安裝pip的兩種方式)

文章目錄 方法一&#xff1a;使用get-pip.py腳本方法二&#xff1a;使用easy_install注意事項 不小心卸載pip后&#xff1a;手動安裝pip的兩種方式 在使用Python進行開發時&#xff0c;pip作為Python的包管理工具&#xff0c;是我們安裝和管理Python庫的重要工具。然而&#x…

產品經理技能揭秘:如何巧妙啟發需求,引領市場新潮流

文章目錄 引言一、需求啟發的定義二、需求啟發的藝術三、需求啟發的重要性四、需求啟發的流程五、需求啟發的問題與挑戰內部自身的問題與挑戰&#xff1a;挑戰一&#xff1a;知識的詛咒挑戰二&#xff1a;做與定義的不同挑戰三&#xff1a;溝通障礙挑戰四&#xff1a;需求變更頻…

solidity:構造函數和修飾器、事件

構造函數? 構造函數&#xff08;constructor&#xff09;是一種特殊的函數&#xff0c;每個合約可以定義一個&#xff0c;并在部署合約的時候自動運行一次。它可以用來初始化合約的一些參數&#xff0c;例如初始化合約的owner地址&#xff1a; address owner; // 定義owner變…

電腦找回徹底刪除文件?四個實測效果的方法【一鍵找回】

電腦數據刪除了還能恢復嗎&#xff1f;可以的&#xff0c;只要我們及時撤銷上一步刪除操作&#xff0c;還是有幾率找回徹底刪除文件。 當我們的電腦文件被徹底刪除后&#xff0c;盡管恢復的成功率可能受到多種因素的影響&#xff0c;但仍有幾種方法可以嘗試找回這些文件。本文整…

使用 docker buildx 構建跨平臺鏡像

buildx是Docker官方提供的一個構建工具&#xff0c;它可以幫助用戶快速、高效地構建Docker鏡像&#xff0c;并支持多種平臺的構建。使用buildx&#xff0c;用戶可以在單個命令中構建多種架構的鏡像&#xff0c;例如x86和arm架構&#xff0c;而無需手工操作多個構建命令。此外bu…

【React Hooks原理 - useCallback、useMemo】

介紹 在實際項目中&#xff0c;useCallback、useMemo這兩個Hooks想必會很常見&#xff0c;可能我們會處于性能考慮避免組件重復刷新而使用類似useCallback、useMemo來進行緩存。接下來我們會從源碼和使用的角度來聊聊這兩個hooks。【源碼地址】 為什么要有這兩個Hooks 在開始…

使用selenium定位input標簽下的下拉框

先來看一下頁面效果&#xff1a;是一個可輸入的下拉列表 再來看一下下拉框的實現方式&#xff1a; 是用<ul>和<li>方式來實現的下拉框&#xff0c;不是select類型的&#xff0c;所以不能用傳統的select定位方法。 在著手定位元素前一定一定要先弄清楚下拉列表…

前后端的學習框架

前后端的學習框架 視頻鏈接&#xff1a;零基礎AI全棧開發系列教程&#xff08;一&#xff09;_嗶哩嗶哩_bilibili

什么是后端?

1、什么是后端&#xff1f; 后端開發人員從事于構建Web應用程序背后的實際邏輯&#xff0c;負責通過API向前端或者其他系統提供其他需要的信息&#xff0c;如&#xff1a;數據。 實際上&#xff0c;開發web應用中對用戶不可見的部分&#xff0c;稱為web后端&#xff0c;也就是…

初學vue3與ts:獲取組件ref實例

/*** 獲取組件ref* param {VueComponentIns} 組件實例* returns 組件ref*/ // eslint-disable-next-line export function useCompRef<T extends abstract new (...args: any) > any>(_: T) {return ref<InstanceType<T>>(); }使用 <a-com ref"a…

匯凱金業:數字貨幣對經濟的影響有哪些

隨著信息技術的飛速發展&#xff0c;數字貨幣作為一種新興的貨幣形態&#xff0c;正逐步走進人們的視野&#xff0c;并對傳統經濟體系產生著深遠影響。它不僅革新了交易方式&#xff0c;更在重塑金融格局、賦能經濟發展等方面展現出巨大潛力。 一、交易效率的“加速器” 數字…

單例模式之懶漢式

文章目錄 單例模式&#xff08;懶漢式&#xff09;代碼懶漢式&#xff08;線程不安全&#xff09;懶漢式&#xff08;線程安全&#xff0c;加鎖&#xff09;雙重檢查鎖&#xff08;線程安全&#xff0c;推薦&#xff09; 單例模式&#xff08;懶漢式&#xff09; 懶漢式是符合…

xxl-job集成SpringBoot

安裝xxl-job客戶端一般有很多方式&#xff0c;我這里給大家提供兩種安裝方式&#xff0c;包含里面的各項配置等等。 前期需要準備好MySQL數據庫。復制SQL到數據庫里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

項目機會:4萬平:智能倉,AGV,穿梭車,AMR,WMS,提升機,機器人……

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 如下為近期國內智能倉儲物流相關項目的公開信息線索&#xff0c;這些項目具體信息會發布到知識星球&#xff0c;請感興趣的球友先人一步到知識星球【智能倉儲物流技術研習社】自行下載…

《SoC設計方法與實現》:全面掌握系統芯片設計精髓(可下載)

SoC&#xff08;System on Chip&#xff0c;系統級芯片&#xff09;設計是一項復雜而精細的工程活動&#xff0c;它涉及到將一個完整的電子系統的所有組件集成到一個單一的芯片上&#xff0c;包括處理器核心、內存、輸入/輸出端口以及可能的其他功能模塊。這種集成不僅要求設計…

oracle存儲結構-----邏輯存儲結構(表空間、段、區、塊)

文章目錄 oracle存儲結構圖&#xff08;邏輯存儲物理存儲&#xff09;oracle邏輯存儲結構圖邏輯存儲結構、表空間、段、區、數據塊的關系&#xff1a;1、數據 塊&#xff08;block&#xff09;---邏輯存儲最小單位2、 數據區&#xff08;extent&#xff09;--存儲空間分配和回收…

【AutoencoderKL】基于stable-diffusion-v1.4的vae對圖像重構

模型地址&#xff1a;https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要參考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下載到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…