日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django07:模板语法/标签/inclusion_tag/模版的继承

發布時間:2023/12/4 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 - 博客園

總結

以上是生活随笔為你收集整理的Django07:模板语法/标签/inclusion_tag/模版的继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。