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

Mar*_*ark 5 python mako pyramid

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

      <%!
        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
Run Code Online (Sandbox Code Playgroud)

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

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

此致,Mark Huang

Mic*_*kel 5

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

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