2010-10-31 8 views
1

In this article modèles Django comme celui-cilistes d'impression avec modèle Mako (Django Rejoignez tag)

{% for i in mylist %} 
    <tr> 
    <td>{{i.replist|join:"</td><td>" }}</td> 
    </tr> 
{% endfor %} 

imprime la liste mylist qui est un objet. Cela peut-il être fait à Mako? Merci.

EDIT

class Rep(db.Model): 
    author = db.UserProperty() 
    replist = db.ListProperty(str) 
    unique = db.ListProperty(str) 
    date = db.DateTimeProperty(auto_now_add=True) 

class MainPage(webapp.RequestHandler): 
    def get(self):  
     user = users.get_current_user() 
     greeting = None 

     if user: 
      greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" % 
         (user.nickname(), users.create_logout_url("/"))) 
     else: 
      greeting = ("<a href=\"%s\">Sign in or register</a>." % 
         users.create_login_url("/")) 

     L = []         
     s = self.request.get('sentence')   
     L.append(s)        

     L = L[0].split('\r\n')  

     def f2(L): 
      checked = [] 
      for e in L: 
       if e not in checked: 
        checked.append(e) 
      return checked 

     Rep().replist = L         
     Rep().put()        
     mylist = Rep().all().fetch(10) 

     leng = len(mylist) 
     T = type(mylist) 
     self.response.out.write("Ttttt") 
     print [i for i in mylist]  
     L2 = f2(L) 
     x = len(L) 
     y = len(L2) 
     delta = x - y 
     for i in range(delta): 
      L2.append('') 

     q = Rep().all() 
     results = q.fetch(10) 
     db.delete(results) 



     template_values = {"s": s, 
          "L": L, 
          "L2": L2, 
          "x": x, 
          "y": y, 
          "greeting": greeting, 
          "mylist": mylist, 
          "leng": leng, 
          "T": T, 
          } 

     path = os.path.join(os.path.dirname(__file__), 'main.mako') 
     templ = Template(filename=path) 
     self.response.out.write(templ.render(**template_values)) 

Répondre

1

http://www.makotemplates.org/docs/syntax.html#syntax_control

EDIT: Je suggère d'utiliser une liste ordonnée ou nommée tuple au lieu d'un dictionnaire afin que vous puissiez vous concentrer sur votre sortie au lieu de vos données.

% for entry in mylist: 
    <tr> 
     % for key, value in entry: 
     <td>${value}</td> 
     % endfor 
    </tr> 
% endfor 

Vous pouvez imbriquer ces si vous avez besoin pour produire un grand nombre <td> s. Pour faire la partie jointe, utilisez simplement une boucle imbriquée.

+1

Je pense qu'il cherche un remplacement pour le filtre 'join' plutôt que pour le tag' for'. –

+0

Oui, j'essaye de rendre le mylist qui est l'objet de liste: 'mylist = Rep(). All(). Fetch (10)' pour la boucle rend juste l'objet pas les éléments de l'objet. – Zeynel

+0

Pouvez-vous nous donner un exemple de l'un de vos éléments de liste? Si c'est un objet retourné par un modèle, vous devriez être capable de faire $ {i.member} à la place de $ {someVar} – Scott