GAE 的模板過濾函數(函式)


續前文,因為這想詳細交代一下,所以就獨立一篇來..
因為要在模板中使用迴圈,列出資料,所以就出現了要將資料同時作出轉換..
但發現他本身好像並沒有提供相關的函數吧,所以就只好自己寫..誰不知道出錯..
原來在這 Python 的模板中需要使用函式的話,就要自己註冊這函數,才可在模板中使用?
上網找了很多東西,試了很多 Keyword 都沒效,最後隨著深入的考古..終於解決了..一個小時的結論 = =
多的不說自記錄一下 (這本就不該寫太多!)

1
2
3
4
# 條例解說.比對你的 / 進入的是 index.py
# 那先在根本目中建一目錄,名為 common (名字喜歡)
# 之後再到 common 中建立一個名為 __init__.py 的空白檔案,再來就是 templatefilters.py
# 1. 打開 templatefilters.py 將下面的檔案存下來
1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
# 從 google 擴展中匯入 webapp 模組
from google.appengine.ext import webapp

# 建立註冊變量, 之後需要用他去註冊自定義的過濾函式
register = webapp.template.create_template_register()

# 時間格式化轉換 - 自定義的函數
def dateFormat(value):
return (value + timedelta(hours=+8)).strftime("%Y-%m-%d %H:%M:%S")

register.filter(dateFormat)
1
2
3
4
# 2. 再到 index.py 在輸出模板的位置上面,加上下面的句子..
# -- 需要注意的是, common 要和你的目錄一樣,而 templatefilters 就是那檔案名啦..

webapp.template.register_template_library('common.templatefilters')
1
2
# 3. 最後就是模板的應用..就可以直接調出

最後一小點結論,如果明天真的有空,應該要將整個程序分離開來..
直接使用 django 這 framework 應該比較好吧?..不過工程就..Orz

GAE 的模板過濾器解決方法參考至 :
http://groups.google.com/group/google-appengine/browse_thread/thread/494f4cf0698d463f
http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html