Drucken von Listen mit Mako-Vorlage (Django Join-Tag)
-
27-09-2019 - |
Frage
in diesem Artikel Django-Vorlagen wie folgt
{% for i in mylist %}
<tr>
<td>{{i.replist|join:"</td><td>" }}</td>
</tr>
{% endfor %}
druckt die Liste mylist
, die ein Objekt ist. Kann dies in Mako getan werden? Danke.
Bearbeiten
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))
Lösung
http://www.makotemplates.org/docs/syntax.html#syntax_control
EDIT: Ich würde vorschlagen, eine geordnete Liste oder dem Namen Tupel anstelle eines Wörterbuchs verwendet, so dass Sie auf Ihrem Ausgang statt Ihrer Daten konzentrieren können.
% for entry in mylist:
<tr>
% for key, value in entry:
<td>${value}</td>
% endfor
</tr>
% endfor
Sie können Nest diese, wenn Sie brauchen, um Ausgangs viele <td>
s. Gehen Sie den Teil verbindet, nur eine verschachtelte Schleife verwenden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow