flask實現在首頁文章列表中圖片簡略表示

1. 問題

最近在使用 flask 開發一個論壇時遇到了下面問題:

我的站點首頁有很多的文章,文章裏面會出現圖片(實際是上傳到服務器的圖片 html 鏈接),我需要在站點首頁裏將文章中的圖片簡略表示成 [圖片] 兩個字呢,就像知乎手機客戶端那種。

就像下圖第二樓中的簡略表示,但那個是我爲了描述方便,手打的。

這裏寫圖片描述

另外補充兩點:

  1. 我的博客文章是保存在數據庫中的 html 文本
  2. 首頁的文章顯示是通過 jinja2 模板引擎渲染出來的

2. 思路

google 查了半天沒有解決辦法,但找到了一點思路,就是自定義 jinja2 過濾器,使用過濾器將 圖片 html 標籤<img /> 全部替換成文字 [圖片] 就行了。

3. 解決

花了半個小時查了下 python 中正則表達式的使用方法,最終解決了問題。

自定義過濾器需要做兩項工作:一是寫一個filter函數;然後在當前環境中註冊filter。

編寫如下過濾器函數 subImg

def subImg(name):
    re_img = re.compile('<img.*?/>')
    return re.sub(re_img, u'[圖片]', name)

然後在環境中註冊該filter,代碼如下:

env=app.jinja_env
env.filters['subImg'] = subImg

需要注意的是,由於我使用的藍圖,並且使用 manage 管理 app 對象,所以需要在 manage.py 文件中加入上述的代碼即可。

下圖時實現結果:

這裏寫圖片描述

4. 參考

http://blog.csdn.net/xia7139/article/details/9971745

發佈了155 篇原創文章 · 獲贊 91 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章