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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python模板语言_django的模板语言

發布時間:2024/7/23 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python模板语言_django的模板语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django模板語言

1.基礎語法:

return render(request,'qwe.html',{'obj':obj}),render的最后的字典可以以鍵值對的形式傳入多個值,

在django模板中只用到兩種符號

變量相關:{{變量名}}? 邏輯相關:{% %}

1)變量相關:

a: 變量名有字母數字和下劃線組成,(.)用來獲取對象的屬性值,ls.0 --> ls[0] dic.key --> dic[key]

注意事項:

.只能調用不帶參數的方法

當模板系統遇到一個.時,會按照如下的順序去查詢:

1.在字典中查詢? 2.屬性或則方法? 3.數字索引

b: Filters:過濾器,用來修改變量的顯示結果;

語法:{{value|filter_name:參數}} 管道符'|'前后不能添加空格,參數':'前后也沒有,要想加上,必須加上引號

幾個常用的過濾器:

default:如果value值沒有傳,就會顯示默認值nothing

{{ value|default:'nothing' }}

注:在django項目里settings.py文件里的TEMPLATES的OPTIONS可以增加一個選項:string_if_invalid里設置跟default的作用一樣;

filesizeformat:將值格式化為一個'人類可讀的'文件尺寸(KB,MB,byte)

{{ obj.file_size|filesizeformat }}

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

{{ value|length }}

slice:切片,跟Python里的切片一樣

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

date:時間格式化(傳入的對象為:datetime.datetime.now())

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

save:django的模板中在往數據庫提交數據時,會自動對一些不符合的數據(html標簽或js代碼等語法)進行轉義,為了源html文件不被破壞,但有一些可能不需要轉義,所以django用過濾器save來顯示你確認過的安全的數據顯示出來

{{ obj.ht_js|safe }}

'ht_js':''

這個js代碼就會被執行

truncatewords:在6個數量的字后截取其后字體用三個點代替

{{ value|truncatewords:6 }}

cut:移除value所有的cut后面參數的字符串

{{ value|cut:' ' }}移除空格

timesince:傳入的時間對象跟當前的時刻的時間的一個時間差,用于寫多長時間之前

{{ value|timesince }}

timeuntil:當前時間對未來的時間的一個時間差,多長時間之后

{{ conference_date|timeuntil:from_date }}

c:自定義filter:自定義過濾器只是帶有一個或兩個位置參數的Python函數,所以不能用*args或**kwargs

創建filter的步驟:

在django項目中的app01下的文件夾中

創建一個templatetags包(package),在該包下創建一個py文件,來寫自定義的filter函數

app01/templatetags/mytext--

#導入template

from django importtemplate#生成一個注冊對象

register =template.Library()#裝飾器(告訴django自定義了一個filter)

@register.filter()defadjust(value,arg):print(arg)return value + arg['name']

在html文件中導入使用:

#導入自定義filter文件,跟import類似

{% load mytext %}

#adjust是裝飾器函數,后面參數可以傳入一個對象

{{ obj.name|adjust:obj }}

注意:在創建一個filter對象時,都要重啟一下

tags:

for循壞可用的一些參數:forloop本身是一個字典,屬性用如下幾項:

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 %}
  • {{ user.name }}{% empty %} 循環過程結束,沒有符合的條件
  • 空空如也{% endfor %}

if,elif和else:

{% if user_list|length > 5 %}

七座豪華SUV

{% else %}

黃包車

{% endif %}

if語句支持and, or , == ,,<=,>=,in,not in,is,is not判斷,但不支持連續判斷

例如:a>b>c這是Python里可以實現,但是在模板語言里寫連續判斷格式: a>b and b>c

with:修改變量名稱,重命名

{% with total=business.employees.count %}

{{ total }} employee{{ total|pluralize }}

{% endwith %}

csrf_token:

這個標簽用于跨站請求偽造保護(當你開啟一個服務的時候,別人也可以用自己的文件通過瀏覽器向你發送請求,有可能是惡意的)

所以django添加了csrf用來唯一確定是提交的表單是本頁面發出的;

在頁面(html文件)上form表單下寫上

{% csrf_token %}

會在表單上添加隱藏的input框(里面是一個64位的隨機數)

自定義simpletag:

和filter類似,都是在模板(html)中接收到數據時,可以對其過濾(操作,加功能,給模板變量加裝飾器)

不同的是,filter只能接收1個或2個參數,而simpletag可以接收多個參數;

定義注冊simple tag:

from django importtemplate#register:記錄; 登記簿; 登記,注冊; 自動記錄器; vt. 登記

register =template.Library()

@register.simple_tagdef text(*args,**kwargs):print(args)return args,kwargs

使用自定義simple tag

{% load mytest %}

{% text list key1=dict%}

#傳入兩個對象,分別在裝飾器中處理,然后返回給模板

改時間的配置:

1.settings中改? ?USE_L10N = False

2.DATETIME_FORMAT = 'Y-m-d H:i:s'

DATE_FORMAT = 'Y-m-d'? ?這時你的時間對象就會轉為時間格式

總結

以上是生活随笔為你收集整理的python模板语言_django的模板语言的全部內容,希望文章能夠幫你解決所遇到的問題。

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