django自定義模板過濾器-創(chuàng)新互聯(lián)

參考:http://www.cnblogs.com/qwj-sysu/p/4246605.html

10多年的荔波網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整荔波建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(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 內容要為空), 所以要根據(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 內容要為空#}
               {% 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">
                           ¥&nbsp;<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">
                           ¥&nbsp;<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)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

標題名稱:django自定義模板過濾器-創(chuàng)新互聯(lián)
當前網(wǎng)址:http://muchs.cn/article22/dsgocc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站建設、網(wǎng)站建設、做網(wǎng)站、移動網(wǎng)站建設、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設