如何在Pyramid模板中检查经过身份验证的用户?

时间:2012-04-02 10:22:22

标签: python pyramid mako

我正在使用带有Mako模板的Pyramid 1.3b。我有一个基本模板,根据用户是否登录显示一些导航组件。我是这样做的:

      <%!
        from pyramid.security import authenticated_userid

        def is_authenticated(request):
          return authenticated_userid(request)
      %>

% if is_authenticated(request):
        <!-- 2 Column -->
        <div class="row-fluid main-content">
          <div class="span2">
            <ul class="nav nav-list">
              <li class="nav-header">
                Company A
              </li>
              <li class="active"><a herf="/product/add">Product</a></li>
              <li><a href="#">Order</a></li>
            </ul>
          </div>
          <div class="span10">
            ${self.body()}
          </div>
        </div>
        <!-- End of 2 column -->
% else:
        ${self.body()}
% endif

因此,如果用户已登录,我会尝试显示两列布局,如果用户未登录,则只显示100%宽度div。

我正在使用顶部定义的代码块来检查用户是否经过身份验证。我想知道在金字塔中有更好的方法吗?

此致 Mark Huang

1 个答案:

答案 0 :(得分:5)

这很好。通常,为了分离表示和逻辑,您可以将用户登录的事实传递给您的模板,而不是在mako中计算它。通常,您需要有关用户的更多信息,而不仅仅是他们已登录。为此,以下食谱配方非常有用。

http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/auth/user_object.html