1

我的網站的一部分是一個維基引擎。當一個頁面不存在時,我想提供一個自定義的404錯誤頁面,其中包含一個創建新頁面的鏈接。這個自定義404應該只能在失敗的維基頁面視圖的上下文中看到。如何在金字塔中包含HTTPNotFound錯誤中的鏈接?

爲了實現這個邏輯,我簡單地返回(不是引發)一個HTTPNotFound()對象和一個包含新頁面創建鏈接的自定義消息。不幸的是,這些鏈接已經逃脫。 如何強制HTML鏈接顯示爲鏈接?

編輯: 我找到了一個解決方案的形式Python Pyramid & Chameleon templating language escapes html

class Literal: 
    def __init__(self, s): 
     self.s = s 
    def __html__(self): 
     return self.s 

這很可能是這樣一個對象已經在金字塔

+0

http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/hooks.html#changing-the-not-found-view 它看起來像你可以創建一個自定義的'not_found'查看你可以呈現模板的地方.http://stackoverflow.com/questions/9815224/pyramid-custom-404-page-returns-as-200-ok – dm03514 2013-04-04 13:18:05

+0

@ dm03514是的,但這會讓事情變得更加複雜。例如,我只想要在沒有找到wiki頁面(即不存在)時調用此自定義404視圖,以及另一個默認的404頁面。 – ascobol 2013-04-04 13:27:10

回答

2

的存在不是在金字塔發現意見接受相同的謂詞作爲常規視圖。

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 }}關閉字符串上的自動轉義。