2012-04-02 1 views
4

Я использую Pyramid 1.3b с шаблонами Мако. У меня есть базовый шаблон, который отображает некоторые навигационные компоненты на основе того, вошел ли пользователь в систему или нет. Я делаю это так:Как проверить подлинность пользователя в шаблонах Pyramid?

 <%! 
     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, если пользователь не вошел в систему

.

Я использую блок кода, определенный сверху, чтобы проверить, аутентифицирован ли пользователь. Мне интересно, есть ли лучший способ сделать это в Pyramid?

С уважением, Mark Huang

ответ

5

Это нормально. Обычно в интересах разделения представления и логики вы должны передать в свой шаблон тот факт, что пользователь вошел в систему, вместо того, чтобы вычислять его в mako. Также обычно вам нужна дополнительная информация о пользователе, а не только то, что они вошли в систему. Для этого полезен следующий рецепт поваренной книги.

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