2012-04-02 8 views
4

Ich benutze Pyramid 1.3b mit Mako Templating. Ich habe eine Basisvorlage, die einige Navigationskomponenten basierend darauf anzeigt, ob der Benutzer angemeldet ist oder nicht. Ich tue es auf diese Weise:Wie nach authentifizierten Benutzer in Pyramid Templates zu überprüfen?

 <%! 
     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 

Also, ich versuche, eine zweispaltige Layout angezeigt werden, wenn der Benutzer angemeldet ist, und nur eine Breite von 100% div, wenn der Benutzer nicht angemeldet ist

.

Ich verwende einen oben definierten Code-Block, um zu überprüfen, ob der Benutzer authentifiziert ist. Ich frage mich, ob es einen besseren Weg gibt, dies in Pyramid zu tun?

Grüße, Mark Huang

Antwort

5

Das ist in Ordnung. Normalerweise würden Sie im Interesse der Trennung von Präsentation und Logik die Tatsache, dass ein Benutzer angemeldet ist, in Ihre Vorlage eingeben, anstatt sie in mako zu berechnen. In der Regel benötigen Sie mehr Informationen über den Benutzer als nur, dass sie eingeloggt sind. Dafür ist das folgende Kochbuch-Rezept sehr nützlich.

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