2010-05-16 21 views
1

的mothed是:如何啓用在谷歌應用內引擎的tamplate方法

def printa(x): 
    return x 

的效應初探是:

self.response.out.write(template.render(path, {'printa':printa})) 

的HTML是:

{{ printa 'sss'}} 

我想在我的頁面顯示'sss',

那麼如何爲此,

感謝

更新

我創建創建一個templatetags文件夾,2 PY文件:

templatetags 
    |--------__init__.py 
    |--------tags.py 

在tags.py是:

#from django import template 
from google.appengine.ext.webapp import template 

register = template.Library() 

def printa(): 
    return 'ssss' 
register.simple_tag(printa) 

該html是:

{% load tags%} 
{% printa %} 

,但它顯示錯誤,錯誤是:

TemplateSyntaxError: 'tags' is not a valid tag library: Could not load template library from django.templatetags.tags, No module named tags 

爲什麼呢?

有什麼不對?

感謝

答案是:

tags.py:

from google.appengine.ext import webapp 
register = webapp.template.create_template_register() 

@register.filter 
def printa(value,y): 
return 'url:%s' % y 

@register.tag 
def printb(x,y): 
return str(x.__dict__) +'dddddddddddddddddddddddddddddddd'+ str(y.__dict__) 
#return x 
#register.tag('printb',do_pagednav) 

,然後在HTML(a是一個變量i發送到模板):

{{a|printa:"dwqdq"}} 

{% printb %} 

woring:

使用負載:

{% load sometags %} 

回答

1

使用默認的Web應用程序模板系統(這實際上是Django的0.96),你不能做到這一點。您需要將程序邏輯放在程序文件中,而不是放在模板中,因此您無法將參數傳遞給變量。

儘管如此,你並沒有說你實際上想要做什麼;我假設你不會真的想要打印某些東西,因爲你可以將這些東西放在模板中,而不需要打印任何功能。無論你真的想要做什麼,註冊一個custom filter可能是你在找什麼。

+0

嗨Wooble,請查看已更新的 – zjm1126 2010-05-16 02:34:43

+0

http://javawonders.blogspot.com/2009/01/google-app-engine-templates-and-custom。html有一個人在webapp中添加過濾器的經驗;看起來,因爲你沒有完整的django應用程序,所做的事情略有不同。 – geoffspear 2010-05-16 04:49:35