如何在Pyramid中包含HTTPNotFound错误中的链接?

时间:2013-04-04 13:07:29

标签: python http-status-code-404 pyramid html-escape-characters

我网站的一部分是wiki引擎。当页面不存在时,我想提供一个自定义404错误页面,其中包含用于创建新页面的链接。只应在失败的Wiki页面视图的上下文中看到此自定义404。

为了实现这个逻辑,我只返回(不引发)HTTPNotFound()对象,其中包含一个包含新页面创建链接的自定义消息。不幸的是链接被转义了。 如何强制html链接显示为链接?

修改: 我找到了Python Pyramid & Chameleon templating language escapes html

的解决方案
class Literal:
    def __init__(self, s):
        self.s = s
    def __html__(self):
        return self.s

这种对象很可能已经存在于Pyramid

1 个答案:

答案 0 :(得分:2)

Pyramid中的Not Found视图接受与常规视图相同的谓词。

config.add_route('wiki', '/wiki/{page}')

@notfound_view_config()
def notfound_view(exc, request):
    """ Generic notfound view for the entire site."""
    return exc

@notfound_view_config(route_name='wiki')
def wiki_notfound_view(exc, request):
    """ Specific notfound for urls matching the wiki pattern."""
    return exc

就你的逃避问题而言,这是特定于你的模板语言。在mako中你可以使用${ msg | n },在jinja2中你可以使用{{ msg | safe }}来关闭字符串上的自动转义。