【发布时间】:2013-07-24 11:16:30
【问题描述】:
Getting TemplateSyntaxError: Invalid filter: 'truncatechars' 在应用引擎中。我正在使用最新的 django 库。根据"Third-party Libraries in Python 2.7 on appengine" django 最新版本是1.4,truncatechars 包含在同一版本中(django doc)。
index.py
import webapp2
import os
from google.appengine.ext.webapp import template
class MainHandler(webapp2.RequestHandler):
def get(self):
title = " Python, an interactive, object-oriented, extensible programming language."
template_values = {
'title': title,
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
index.html
<html>
<body>
{{title|truncatechars:9}} // Error returns
{{title|slice:"9"}}{% if title|length > 9 %}...{% endif %}
</body>
</html>
在 app.yaml 中
libraries:
- name: django
version: latest
我已尝试使用库 version: "1.4" 并遇到同样的问题。
错误:
File "/home/user/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "/home/user/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1595, in handle_exception
return handler(request, response, e)
File "/home/user/dimensionfinder/urls.py", line 43, in handle_500
response.write(template.render(path, template_values))
File "/home/user/google_appengine/google/appengine/ext/webapp/template.py", line 89, in render
t = _load_internal_django(template_path, debug)
File "/home/user/google_appengine/google/appengine/ext/webapp/template.py", line 163, in _load_internal_django
template = django.template.loader.get_template(file_name)
File "/home/user/google_appengine/google/appengine/_internal/django/template/loader.py", line 160, in get_template
template = get_template_from_string(template, origin, template_name)
File "/home/user/google_appengine/google/appengine/_internal/django/template/loader.py", line 168, in get_template_from_string
return Template(source, origin, name)
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 158, in __init__
self.nodelist = compile_string(template_string, origin)
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 186, in compile_string
return parser.parse()
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 281, in parse
compiled_result = compile_func(self, token)
File "/home/user/google_appengine/google/appengine/_internal/django/template/defaulttags.py", line 693, in do_for
nodelist_loop = parser.parse(('empty', 'endfor',))
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 262, in parse
filter_expression = self.compile_filter(token.contents)
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 356, in compile_filter
return FilterExpression(token, self)
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 538, in __init__
filter_func = parser.find_filter(filter_name)
File "/home/user/google_appengine/google/appengine/_internal/django/template/__init__.py", line 362, in find_filter
raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
TemplateSyntaxError: Invalid filter: 'truncatechars'
【问题讨论】:
-
version: "1.4"(双引号)怎么样? -
如果它不起作用,您可以随时退回使用
|slice:":9" -
您应该显示用于呈现模板的代码。你实际上不是在使用 Django,你是在使用 webapp,所以你必须做一些事情来导入它并使用模板渲染组件,问题一定存在。
-
@Hieu Nguyen:与'版本:“1.4”'相同的错误。当前使用切片。
-
@DanielRoseman:更新了代码。
标签: python django google-app-engine django-templates webapp2