【问题标题】:Printing lists with Mako template (Django Join tag)使用 Mako 模板打印列表(Django Join 标签)
【发布时间】:2011-05-02 23:29:00
【问题描述】:

In this article这样的Django模板

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

打印列表mylist,它是一个对象。这可以在Mako完成吗?谢谢。

编辑

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))  

【问题讨论】:

    标签: mako


    【解决方案1】:

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

    编辑: 我建议使用有序列表或命名元组而不是字典,这样您就可以专注于输出而不是数据。

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

    如果需要输出多个&lt;td&gt;s,可以嵌套这些。要执行连接部分,只需使用嵌套循环即可。

    【讨论】:

    • 我认为他正在寻找 join 过滤器的替代品,而不是 for 标签。
    • 是的,我正在尝试渲染作为列表对象的 mylist:mylist = Rep().all().fetch(10) for 循环只是渲染对象而不是对象的元素。
    • 你能给我们举一个你的清单项目的例子吗?如果它是模型返回的对象,您应该可以使用 ${i.member} 代替 ${someVar}
    • 好的,谢谢。我在上面添加了脚本作为编辑。里面有很多垃圾,因为我一直在这里测试答案。
    • 尝试使用命名元组而不是字典,然后您可以按照设置的顺序调用您的值;字典没有排序,有时会引起一些头痛。另外,请尝试使用更好的命名变量,这有点令人讨厌,但有助于代码的可读性。
    猜你喜欢
    • 2011-04-16
    • 2011-03-06
    • 2013-07-30
    • 2014-03-07
    • 2014-03-20
    • 2022-01-13
    • 2011-11-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多