django自訂 過濾器

來源:互聯網
上載者:User

我寫的部落格程式,為了實現一些特殊的功能,需要自己寫個過濾器。現在把方法記錄下來。

過濾器的功能大概如下,在資料庫裡取出儲存的html代碼各種富文字編輯器儲存的代碼)。然後取出來展示,做類似於文章列表。在一開始,我們會這樣取出來:

{% autoescape off %} {{  post.myContent}}  {% endautoescape %}

但是這個時候就會開始載入圖片資源有img標籤),如果圖片太多,太大,就會使頁面載入得太慢。使用者體驗很差。

也許你會問,為什麼不用jquery的lazyload外掛程式,我覺得那是偽的消極式載入,根本無助於減輕伺服器的壓力。

所以現在需要寫個過濾器,在無須載入圖片的時候,先使得伺服器不用載入圖片。

本文如下:

在app目錄下,建立一個目錄:

templatetags            名字不要搞錯

 

├── filters.py        隨便建一個檔案,名字隨便起

├── filters.pyc

├── __init__.py     這個是自己建立的空檔案,只要名字對就行

└── __init__.pyc

現在看內容: 
 
  1. #!/usr/bin/env python   
  2. #coding:utf-8  
  3.  
  4. from django import template 
  5. register = template.Library() 
  6.  
  7. def cut_imagetags(value): 
  8.     print value 
  9.     return value 
  10.  
  11. register.filter('cut_imagetags', cut_imagetags) 
自己編寫過濾器很簡單,只需要兩個步驟:1、定義一個函數,接收至少一個參數,如function(value,arg)2、使用register.fileter('過濾器名字',函數名)     註冊過濾器
接下來就是使用了。在html檔案中:{% load filters %}   //fileters 是過濾器的那個檔案名稱{% autoescape off %} {{  post.myContent|cut_imagetags}}  {% endautoescape %} 

 

先看個沒用過濾器之前的例子,載入頁面時,伺服器端:

 

[24/Jul/2012 02:35:46] "GET /media/1343066025.950.280283821055DeepinScrot-0444.png HTTP/1.1" 200 43561

[24/Jul/2012 02:35:46] "GET /media/1343066026.890.981396435618DeepinScrot-1556.png HTTP/1.1" 200 57454

[24/Jul/2012 02:35:46] "GET /media/1343066026.030.717419530083DeepinScrot-1029.png HTTP/1.1" 200 339557

看到瀏覽器向伺服器請求了三張圖片。 使用了過濾器之後,就沒有再請求圖片資源了。 自訂過濾器的方法就是如此,就看大家自己要應用在哪些情境上了。 

 

本文出自 “YEELONⒼ ” 部落格,請務必保留此出處http://yeelone.blog.51cto.com/1476571/940949

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.