【发布时间】:2011-12-23 19:20:25
【问题描述】:
我想添加过滤器来格式化我的时间,最好的过滤器是像 django 的 timesince 这样的过滤器,它会自动输出 i18n 所选语言的语言,但首先要快速解决我想格式化我的日期。 suggested solution from the manual 是:
def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
return value.strftime(format)
jinja_environment.filters['datetimeformat'] = datetimeformat
但是将此代码添加到我的文件中不会使过滤器在模板中可用:
{{ ad.modified|datetimeformat }}
TemplateAssertionError: no filter named 'datetimeformat'
如果我将代码添加到 Jinja2 库的 filters.py,那么它就可以工作。但是我不需要手动添加到 Jinja2 文件,它应该可以将 Jinja2 添加到我的app.yaml 并将我的过滤器放在我的代码中而不是 Jinja2 代码中。我应该把过滤代码放在哪里?
谢谢
更新
我的代码看起来像这样,过滤器似乎没有被选中:
from django.utils import translation
from django.utils.translation import gettext, ngettext, ugettext, ungettext, get_language, activate
from jinja2 import Environment, FileSystemLoader
class DjangoTranslator(object):
def __init__(self):
self.gettext = gettext
self.ngettext = ngettext
self.ugettext = ugettext
self.ungettext = ungettext
class DjangoEnvironment(jinja2.Environment):
def get_translator(self, context):
return DjangoTranslator()
jinja_environment = DjangoEnvironment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=['jinja2.ext.i18n'])
jinja_environment.install_gettext_translations(translation)
def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
return value.strftime(format)
jinja_environment.filters['datetimeformat'] = datetimeformat
【问题讨论】:
-
在这种情况下
jinja_environment是什么?你确定它是你用来渲染的那个吗?您可以链接到建议的文档吗?
标签: python google-app-engine jinja2