【问题标题】:How to enable a method in template of google-app-engine如何在 google-app-engine 的模板中启用方法
【发布时间】:2010-05-16 01:47:24
【问题描述】:

方法是:

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 是我发送到模板的变量):

{{a|printa:"dwqdq"}}

{% printb %}

工作:

不要使用负载:

{% load sometags %}

【问题讨论】:

    标签: python google-app-engine templates methods


    【解决方案1】:

    使用默认的 webapp 模板系统(实际上是 Django 0.96),你不能这样做。您应该将程序逻辑放在程序文件中,而不是在模板中,因此您不能将参数传递给变量。

    不过,你并没有说出你真正想要做什么;我假设您实际上并不想打印某些东西,因为您可以将其放入模板中而无需使用函数并打印。无论您实际想要做什么,注册custom filter 可能就是您想要的。

    【讨论】:

    猜你喜欢
    • 2011-12-19
    • 2018-04-09
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2011-04-25
    • 2011-06-01
    相关资源
    最近更新 更多