參考:http://www.cnblogs.com/qwj-sysu/p/4246605.html
10多年的荔波網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整荔波建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“荔波網(wǎng)站設計”,“荔波網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。做的頁面,一個tr里有兩個td, 1、3、5等奇數(shù)數(shù)據(jù)要放在第一個td, 2、4、6等偶數(shù)數(shù)據(jù)要放在第二個td, (如果已經(jīng)沒有數(shù)據(jù),td 內(nèi)容要為空), 所以要根據(jù)取余數(shù)的結果來判斷; 但django的模板沒有取余操作,只好自定義一個
django的模板配置在:setting.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
一、后端
自定義標簽和過濾器必須依賴于一個django app,也就是說,自定義標簽和過濾器是綁定app的。該app應該包含一個templatetags目錄,這個目錄一個和model.py,views.py在同一個層級,記得在該目錄下建立一個__init__.py文件一遍django知道這是一個python包。在該目錄下,你可以新建一個python模塊文件,文件名不要和其他app中的沖突就好。例如:
promotions
migrations
templatetags
__init__.py
get_mod.py
__init__.py
models.py
views.py
get_mod.py
# -*- coding:utf-8 -*-
from django import template
register = template.Library()
@register.filter
def get_mod(arg1,arg2):
return arg1%int(arg2)
自定義過濾器就是接受一個或者連個參數(shù)的python函數(shù)。例如{{var | foo:"bar"}},過濾器foo接受變量var和參數(shù)bar。
如果前端為
{{ forloop.counter|get_mod:"2" }}
則為get_mod(arg1,arg2)
如果前端為
{{ forloop.counter|get_mod }}
則為 get_mod(arg1)
二、前端
<table class="ke-zeroborder" border="0" cellspacing="50" bordercolor="#000000" cellpadding="0" align="center">
<tbody>
{# 因一行有兩列,所以根據(jù)取余數(shù)的結果來判斷是放在第一個td還是第二個td,如果余數(shù)是1,放在第一個td,如果是2,放在第二個td;如果已經(jīng)沒有數(shù)據(jù),td 內(nèi)容要為空#}
{% load get_mod %}
{% for product in product_dict.ring %}
{% if forloop.counter|get_mod:"2" == 1 %}
<tr>
<td >
<p>
<a href="` products`.`4 `"><img src="/static/promotions/` product`.`0 `" /></a>
</p>
<p>
{{ forloop.counter|get_mod:"2" }}` product`.`1 `
<span >(</span><span >已鎖定</span><span >)</span>
</p>
<p class="MsoNormal">
¥ <span >` product`.`3 `</span>
</p>
</td>
{% elif empty %}
<td>
<p></p>
</td>
</tr>
{% else %}
<td >
<p>
<a href="` product`.`4 `"><img src="/static/promotions/` product`.`0 `" /></a>
</p>
<p>
` product`.`1 `(<span >已鎖定</span>)
</p>
<p class="MsoNormal">
¥ <span >` product`.`3 `</span>
</p>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
注意:
{% load %}load的是模塊名,而不是app名
forloop
forloop.counter 表示循環(huán)的次數(shù),它從1開始計數(shù)
forloop.counter0 表示循環(huán)的次數(shù),它從0開始計數(shù)
forloop.revcounter表示循環(huán)中剩下的items數(shù)量,第一次循環(huán)時設為items總數(shù),最后一次設為1
forloop.revcounter0類似于forloop.revcounter,但它是表示的數(shù)量少一個,即最后一次循環(huán)時設為0
forloop.first當?shù)谝淮窝h(huán)時值為True,在特別情況下很有用:
{% for object in objects %}
{% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
` object `
</li>
{% endfor %}
forloop.last當最后一次循環(huán)時值為True
{% for link in links %}` link `{% if not forloop.last %} | {% endif %}{% endfor %}
forloop.parentloop在嵌套循環(huán)中表示父循環(huán)的forloop:
{% for country in countries %}
<table>
{% for city in country.city_list %}
<tr>
<td>Country #` forloop`.`parentloop`.`counter ` </td>
<td>City #` forloop`.`counter `</td>
<td>` city `</td>
</tr>
{% endfor %}
</table>
{% endfor %}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
標題名稱:django自定義模板過濾器-創(chuàng)新互聯(lián)
當前網(wǎng)址:http://jinyejixie.com/article22/dsgocc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站建設、網(wǎng)站建設、做網(wǎng)站、移動網(wǎng)站建設、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容