首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TemplateAssertionError:没有名为“urlencode”的过滤器

TemplateAssertionError:没有名为“urlencode”的过滤器
EN

Stack Overflow用户
提问于 2015-01-22 15:22:49
回答 2查看 1.5K关注 0票数 0

我刚给我的烧瓶项目增加了一个安全的瓶子。它在本地工作,但在OpenShift上报告此错误:

代码语言:javascript
运行
复制
TemplateAssertionError: no filter named 'urlencode'

我不知道它是否是错误的库版本,或者如何调试这个版本。这是我的setup.py包列表:

代码语言:javascript
运行
复制
install_requires=['Flask==0.10.1',
                    'SQLAlchemy==0.9.8',
                    'Flask-SQLAlchemy==2.0',
                    'Flask-Security==1.7.4',
                    'Werkzeug==0.9.5',
                    'blinker==1.3',
                    'Flask-Login==0.2.11',
                    'Flask-Mail==0.9.1',
                    'Flask-Principal==0.4.0',
                    'Flask-Script==2.0.5',
                    'Flask-WTF==0.10.3',
                    'itsdangerous==0.24',
                    'passlib==1.6.2'

  ]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-23 00:58:05

我已经解决了这个问题,在我的本地机器上执行“pip冻结”,并一个一个地将库复制到setup.py。虽然我仍然不确定哪一个产生了错误,但可能是jinja2的错误版本。

票数 0
EN

Stack Overflow用户

发布于 2015-07-28 17:01:49

urlencode滤波器为在第2.7节。但GAE 只支持v2.6。在我的app.yaml中将版本更改为“最新版本”仍然使用2.6 (请注意python27_lib/versions/third_party/jinja2-2.6/jinja2/environment.py路径):

代码语言:javascript
运行
复制
...
 File "/base/data/home/apps/s~healthier-staging/1.386037228785871893/lib/flask/templating.py", line 128, in render_template
context, ctx.app)
  File "/base/data/home/apps/s~healthier-staging/1.386037228785871893/lib/flask/templating.py", line 110, in _render
    rv = template.render(context)
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/jinja2-2.6/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
  File "/base/data/home/apps/s~healthier-staging/1.386037228785871893/lib/flask_security/templates/security/_menu.html", line 4, in template
<li><a href="{{ url_for_security('login') }}{% if 'next' in request.args %}?next={{ request.args.next|urlencode }}{% endif %}">Login</a></li>
TemplateAssertionError: no filter named 'urlencode'`

我通过手动添加一个简单的过滤器(复制添加到jinja的代码)来修复这个问题:

代码语言:javascript
运行
复制
def do_urlescape(value):
    """Escape for use in URLs."""
    return urllib.quote(value.encode('utf8'))
app.jinja_env.globals['urlencode'] = do_urlescape
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28092415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档