2013-04-16 19 views
0

的登錄效果很好,我logout_view:金字塔authn和AuthZ的: '註銷' 的奇怪的行爲

@view_config(route_name='logout') 
def logout_view(request): 
    headers = forget(request) 
    raise HTTPFound(location='request.application_url',headers=headers) 

我得到的輸出:

AttributeError: 'NoneType' object has no attribute 'name' 
(in template single.pt LINE 11: "<p tal:content="result.name"></p>") 

看來,

  1. forgetHTTPFound根本沒有被調用,因爲瀏覽器在「0.0.0.0:6543/logout」中搜索,說內部服務器錯誤
  2. logout_viewsingle.pt模板無關,但似乎single.pt已呈現某處。

    @view_config(route_name='rst', renderer='templates/single.pt', 
          permission='edit',) 
    def rst_view(request): 
        rstId=request.matchdict['id'] 
        rst=DBSession.query(Rst).get(rstId) 
        return { 
        'result':rst, 
        'logged_in':authenticated_userid(request), 
    } 
    

    請幫助:

順便說一句,single.pt模板在flollowing rst_view,這與config.add_route('rst', '/{id}')相關時才使用。

回答

2

看起來像你的路線訂購是搞砸了,/{id}匹配之前/logout,有效地隱藏它。將您的add_route調用反轉爲首先匹配的註銷。

+0

謝謝邁克爾。有效。我沒有照顧這種模式[[唯一性]]順序]。 – maow