Django07:模板語法/標簽/inclusion_tag/模版的繼承

模板語法傳值

列表:l=['a','b','c']

集合:se{‘a’,'yy','ss'}

元組:t=(111,222,333)

render(request.'index,html',locals())

語法規律

{{}}:變量相關

{%%}:邏輯相關

{{func}}

會自動加括號執行,但不支持帶參數;

帶參數會不執行

{{my_class}}

會自動加括號執行(實例化)

總結:內部會判斷當前變量名是否可以加括號調用,如果可以就執行。針對函數名和類名

模板語法取值

d.hobby.3.info

1. 只能使用句點取值“.”, 可以混合使用。

2.“3”是索引,第三個的。

過濾器(最多兩個參數)

過濾器的語法: {{ value|filter_name:參數 }}

default

如果一個變量是false或者為空,使用給定的默認值。 否則,使用變量的值。

{{ value|default:"nothing"}}

如果value沒有傳值或者值為空的話就顯示nothing

length

返回值的長度,作用于字符串和列表。

{{ value|length }}

返回value的長度,如 value=['a',?'b',?'c',?'d']的話,就顯示4.

filesizeformat

將值格式化為一個 “人類可讀的” 文件尺寸 (例如?'13 KB',?'4.1 MB',?'102 bytes', 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,輸出將會是 117.7 MB。

slice

切片

{{value|slice:"2:-1"}}

date

格式化

{{ value|date:"Y-m-d H:i:s"}}

safe

比如:

value = "<a href='#'>點我</a>"

{{ value|safe}}

truncatechars

如果字符串字符多于指定的字符數量,那么會被截斷。截斷的字符串將以可翻譯的省略號序列(“...”)結尾。

參數:截斷的字符數

{{ value|truncatechars:9}}

truncatewords

在一定數量的字后截斷字符串。

{{ value|truncatewords:9}}

cut

移除value中所有的與給出的變量相同的字符串

{{ value|cut:' ' }}

如果value為'i love you',那么將輸出'iloveyou'.

join

使用字符串連接列表,例如Python的str.join(list)

標簽

就是邏輯

for

#for
{% for user in user_list %}<li>{{ user.name }}</li>
{% endfor %}

for循環可用的一些參數:

VariableDescription
forloop.counter當前循環的索引值(從1開始)
forloop.counter0當前循環的索引值(從0開始)
forloop.revcounter當前循環的倒序索引值(從1開始)
forloop.revcounter0當前循環的倒序索引值(從0開始)
forloop.first當前循環是不是第一次循環(布爾值)
forloop.last當前循環是不是最后一次循環(布爾值)
forloop.parentloop本層循環的外層循環

for ... empty

對象是空,無法循環

{% for user in user_list %}<li>{{ user.name }}</li>
{% empty %}<li>空空如也</li>
{% endfor %}

if判斷

if,elif和else

{% if user_list|length > 5 %}七座豪華SUV
{% else %}黃包車
{% endif %}
{% if user_list %}用戶人數:{{ user_list|length }}
{% elif black_list %}黑名單數:{{ black_list|length }}
{% else %}沒有用戶
{% endif %}

with

定義一個中間變量,多用于給一個復雜的變量起別名。

注意等號左右不要加空格。

#方法一
{% with business.employees.count as total %}{{ total }} employee{{ total|pluralize }}
{% endwith %}#方法二
{% with total=business.employees.count %}{{ total }} employee{{ total|pluralize }}
{% endwith %}

自定義過濾器、標簽

先三步走

1. 在應用下創建一個名字 “必須” 教templatetags文件夾

2. 在該文件夾內創建 “任意” 名稱的py文件 eg : mytag.py

3. 在該py文件內 “必須” 先書寫下面兩句話

from django import template
register = template.Library()

例子:

py文件:

from django import template
register = template.Library()#自定義過濾器,參數最多2個
@register.filter(name="cut")
def cut(value, arg):return value.replace(arg, "")@register.filter(name="addSB")
def add_sb(value):return "{} SB".format(value)#自定義標簽,可以多個參數@register.simple_tag(name="plus")
def index(a,b,c,d):return '%s-%s-%s-%s'%{a,b,c,d}

html文件:

#自定義過濾器
{# 先導入我們自定義filter那個文件 #}
{% load app01_filters %}{# 使用我們自定義的filter #}
{{ somevariable|cut:"0" }}
{{ d.name|addSB }}#自定義標簽,多個參數之間,用空格隔開
{% plus 'jason' 123 123 123 %}

inclusion_tag

"""
步驟1.在應用下創建一個名字必須為templatetags文件夾2.在該文件夾內,創建一個任意名稱的py文件3.在py文件內固定寫兩行代碼from django import templateregister = template.Library()"""

當HTML頁面某一個地方的頁面需要傳參數才能動態的渲染出來,

并且在多個頁面都需要使用該局部,那么就考慮將該局部頁面做成inclusion_tag形式。

templatetags/my_inclusion.py

from django import templateregister = template.Library()@register.inclusion_tag('result.html')
def show_results(n):n = 1 if n < 1 else int(n)data = ["第{}項".format(i) for i in range(1, n+1)]return {"data": data}#第二種return locals()

templates/snippets/result.html

<ul>{% for choice in data %}<li>{{ choice }}</li>{% endfor %}
</ul>

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>inclusion_tag test</title>
</head>
<body>{% load inclusion_tag_test %}{% show_results 10 %}
</body>
</html>

模版的繼承

note:所有模版,在后臺渲染后,返回前端。

在子頁面中

{% extends 'layouts.html' %}

塊(block)

通過在母板中使用{% block? xxx %}來定義"塊"

在子頁面中通過定義母板中的block名來對應替換母板中相應的內容。

{% block page-main %}<p>世情薄</p><p>人情惡</p><p>雨送黃昏花易落</p>
{% endblock %}

模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Title</title>{% block page-css %}{% endblock %}
</head>
<body><h1>這是母板的標題</h1>{% block page-main %}{% endblock %}
<h1>母板底部內容</h1>
{% block page-js %}{% endblock %}
</body>
</html>

規律:一般模板內至少應該有三塊區域

css

html

js

補充:

使用模板的內容

{{block.supper}}

模板導入

頁面某個局部全部導入

{% include 'navbar.html' %}

引用:Django模板語言相關內容 - Q1mi - 博客園

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

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

相關文章

紅象云騰發布新一代PB級高速大數據平臺產品

ZD至頂網服務器頻道 03月23日 新聞消息&#xff1a;在3月19日舉辦的China Hadoop Summit&#xff08;中國Hadoop技術峰會&#xff09;上&#xff0c;中國Hadoop大數據廠商紅象云騰與OpenPOWER基金會共同發布紅象云騰的新一代大數據產品,幫助企業高速處理PB規模數據。 此次發布…

個人筆記 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

為什么80%的碼農都做不了架構師&#xff1f;>>> 模板創建項目 模板地址 更新package.json中的dependencies依賴到最新版本 當新建一個項目的時候&#xff0c;從其他項目的package.json里面copy一份dependencies過來。 但因為是新項目&#xff0c;我們想用各個依賴包…

dotnet-exec 0.12.0 released

dotnet-exec 0.12.0 releasedIntrodotnet-exec 是一個 C# 程序的小工具&#xff0c;可以用來運行一些簡單的 C# 程序而無需創建項目文件&#xff0c;讓 C# 像 python/nodejs 一樣簡單&#xff0c;而且可以自定義項目的入口方法&#xff0c;支持但不限于 Main 方法。Install/Upd…

美國用戶現在可以下載其所有Apple帳戶數據,這是操作方法

Starting today, Apple is allowing all US users to download a copy of every last bit of their data from the company. 從今天開始&#xff0c;Apple允許所有美國用戶從該公司下載其數據的最后一部分的副本。 This feature has been available for EU users since May, th…

java 的原碼、補碼、反碼小總結

先看一個代碼吧: int h; return (key null) ? 0 : (h key.hashCode()) ^ (h >>> 16); 這個應該很熟悉吧,是 java 里 HashMap 的計算 hash 值的方法.這里有一個運算符 "^"&#xff0c;他其實就是使用補碼來運算的.好了&#xff0c;那么我們下面來說說這些…

Django08:模型層(ORM)--測試腳本/必知的13條/神器的雙下劃線查詢/多表操作

單表操作 django 自帶的sqlite3數據庫對日期格式不是很敏感&#xff0c;處理的時候容易出錯。 測試腳本 測試環境準備&#xff1a;去manage.py 中拷貝錢四行代碼&#xff0c;然后自己手寫兩行。 腳本無論在引用下面&#xff0c;還是單獨開設PY文件都可以。 import os impor…

“互聯網+”促傳統企業三大轉型

2015年是傳統行業互聯網化的元年。國家提出要制定“互聯網”行動計劃后&#xff0c;互聯網旅游、互聯網汽車、互聯網三農、互聯網物流、互聯網醫療等開始起步。同時&#xff0c;面對不確定的移動互聯網時代&#xff0c;互聯網某些技術和模式還在進化、演變之中&#xff0c;每一…

開發高性能ASP.NET應用

本文是“.NET Conf China 2022”上我的一個分享&#xff0c;這里更細化的分享出來。分享分為四個部分&#xff1a;制定指示設計應用正確測試性能優化高性能&#xff1a;不一定是架構出來的&#xff0c;但一定是優化出來的。制定指標-收集首先把項目中的熱路徑API和核心API找出來…

Ethereum-EIPs

What is an EIP? Ethereum Improvement Proposal 以太坊改進建議的文檔 這個文檔向Ethereum社區提供信息&#xff0c;為Ethereum、Ethereum的進程、環境描述一個新特征&#xff0c;該EIP應當為該特征提供一個基本的技術描述和原理原理。該EIP作者有責任在社區和不同意見的文檔…

Django08-1:模型層(ORM)--聚合查詢/分組查詢/F與Q查詢/開啟事務/常用字段及參數/自定義字段/數據庫查詢優化

聚合查詢 單獨使用時&#xff0c;用aggregate 1.只要是跟數據庫相關的模塊 基本都在django.db.models里面 如果沒有應該在django.db里面 2. 聚合查詢通常配合分組使用 from django.db.models import Avg, Sum, Max, Min, Count# 1.所有書的平均價格 resmodels.Book.objects.…

記事本狀態欄不會自動_如何在記事本中同時啟用狀態欄和自動換行

記事本狀態欄不會自動The status bar in Windows’ Notepad displays the current line number and column number of the cursor location. However, if you find that the Status Bar option on the View menu is grayed out, it may be because you have Word Wrap enabled…

洛谷P2587 [ZJOI2008] 泡泡堂

題目傳送門 分析&#xff1a;一道策略游戲題&#xff0c;要求最大期望得分和最小期望得分。首先分析最大&#xff0c;很顯然是可以用一種類似于田忌賽馬的思維來做&#xff0c;將兩隊的實力按照從大到小&#xff08;其實從小到大也可以&#xff09;排序&#xff0c;然后就按照順…

極端高溫導致澳大利亞斷網

&#xfeff;西澳大利亞首府珀斯因惡劣天氣出現了網絡連接問題&#xff0c; 網絡故障不是由于暴風雨或閃電引起的&#xff0c;而是極端高溫。本周一是珀斯有記錄以來第六熱的天&#xff0c;當天最高溫度達到了44.4℃。因為創紀錄的高溫&#xff0c;澳大利亞寬帶 服務商iiNet在當…

推薦一款采用 .NET 編寫的 反編譯到源碼工具 Reko

今天給大家介紹的是一款名叫Reko的開源反編譯工具&#xff0c;該工具采用C#開發&#xff0c;廣大研究人員可利用Reko來對機器碼進行反編譯處理。我們知道.NET 7 有了NativeAOT 的支持&#xff0c;采用NativeAOT 編譯的.NET程序 無法通過ILSpy 之類的傳統工具得到源碼&#xff0…

并行傳輸數據和串行傳輸數據_為什么串行數據傳輸比并行數據傳輸快?

并行傳輸數據和串行傳輸數據SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why wouldn’t the parallel transmission be faster? SATA硬盤驅動…

得到某月的天數

Calendar timeCalendar.getInstance(); time.clear(); time.set(Calendar.YEAR,2018);//year年 time.set(Calendar.MONTH,1);//Calendar對象默認一月為0,month月 int daytime.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數 System.out.pri…

Django09:圖書管理系統筆記/choices用法/ MTV與MVC模型/多對多三種創建方式

圖書管理系統筆記 redirect括號內可以直接寫url 也可以直接寫別名 但如果別名需要參數&#xff0c;必須使用reverse解析。 choices用法 使用場景&#xff1a;能列舉完全的數據 #使用方法&#xff1a;xxx_choice #1. get.xxx_display #2. 如果超出范圍&#xff0c;則顯示原…

業務處理速度變慢?且看IT如何成為救世主

在日常生活的方方面面&#xff0c;我們似乎都在期待著一種即時的便利。比如&#xff0c;用手機購物、訂餐、繳費、預約掛號等等。而在企業中&#xff0c;時間與效率可不是一種休閑福利&#xff0c;而是一項重要的商業功能。我們有理由期待&#xff0c;當今史無前例的數字革命正…

微軟讓卡塔爾世界杯踏入元宇宙

遵守前一篇公眾號文章里的承諾&#xff0c;昨天盆盆在視頻號里錄制了一段5分鐘左右的短視頻&#xff0c;講了江森自控和微軟Azure&#xff0c;如何幫助卡塔爾世界杯打造基于元宇宙的數字體育館。Part.1歡迎掃碼關注我的視頻號(每天更新元宇宙、云計算和數字化的短視頻)。Part.2…

洛谷——P1305 新二叉樹(新建二叉樹以及遍歷)

題目描述輸入一串二叉樹&#xff0c;用遍歷前序打出。 輸入輸出格式輸入格式&#xff1a; 第一行為二叉樹的節點數n。(n \leq 26n≤26) 后面n行&#xff0c;每一個字母為節點&#xff0c;后兩個字母分別為其左右兒子。 空節點用*表示 輸出格式&#xff1a; 前序排列的二叉樹 輸…