在字典中为所有视图包含经过身份验证的用户

时间:2014-10-14 22:20:44

标签: python pyramid

我正在研究Pyramid authorization tutorial,我注意到了

的模式
  

logged_in = request.authenticated_userid

添加到每个视图字典中。可以避免吗?即是否有自动将用户ID广告到每个视图的配置。或者有没有办法用用户ID创建一个基本的抽象视图并从中继承?

教程中的部分代码:

@view_config(context='.models.Page', renderer='templates/view.pt', permission='view')
def view_page(context, request):
    # not relevant code
    return dict(page = context, content = content, edit_url = edit_url,
                logged_in = request.authenticated_userid)

@view_config(name='add_page', context='.models.Wiki', renderer='templates/edit.pt', 
             permission='edit')
def add_page(context, request):
     # not relevant code
     return dict(page=page, save_url=save_url,
                 logged_in=request.authenticated_userid)

1 个答案:

答案 0 :(得分:1)

自从我上次查看以来已经有一段时间了,但我认为示例中的logged_in只是用于有条件地检查是否有登录用户的示例。您也可以轻松地在任何视图或模板中引用request.authenticated_userid,并获得相同的行为,而不必明确地向响应字典添加状态。 request对象也应该可以在视图模板中引用。

或者,我已经使用他们的cookbook to add a user object to the request创建了一个友好的request.user对象,我可以用它来检查所需的登录状态,另外还可以获取我的其他用户对象详细信息我也需要。

相关问题