首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML中的Python :通过更改变量的名称来迭代几个列表

HTML中的Python :通过更改变量的名称来迭代几个列表
EN

Stack Overflow用户
提问于 2016-01-01 16:57:22
回答 2查看 55关注 0票数 2

我在这方面是很新的,所以如果问题的水平很低,请原谅。

我试图通过21课笔记的列表变量的形式,得到每一课笔记的内容,其中每一个包含几个子类别。这些内容将通过HTML显示在网页中。

课程笔记名为lesson1lesson2,. lesson21

我的代码如下所示:

代码语言:javascript
复制
    {% for i in range(1, 22) %}

      {% for content in "lesson" + "str(i)" %}
        <div class="col-md-9 contents" id="{{content[0]}}">
         {{content[2] | safe}}
        </div>
      {% endfor %}

    {% endfor %}

我显然知道我所做的是不正确的,但我决定把"lesson" + "str(i)"留在那里,这样你就可以看到我希望做的事情了。当然,这里是我想要lesson1lesson2等的地方。

所以你可以希望看到我在努力做什么,但我不知道如何去做,也找不到答案。如何使第二个for循环运行到lesson1lesson2等,直到lesson21

content[2]是该特定子类别内容列表中的占位符。每堂课包含2到6张清单。

更多信息:

我收到的第一个答案是好的,但对我不太好,因为我的清单已经是清单了。即

lesson1 = [ ['reference-titel', 'part-titel', """content"""], ['reference-titel2', 'part-titel2', """content"""], [......] ]

而且,我正在上面构建一个下拉菜单,如下所示:

代码语言:javascript
复制
      `<div class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">
          The Web and Basic HTML
          <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
          {% for content in lesson1 %}
              <li><a href="#{{content[0]}}">{{content[1]}}</a></li>
          {% endfor %}
        </ul>
      </div>`

因此,如果我把所有21个课程的所有不同的子类别都放在一个单独的、非常大的子类别列表中,我就无法为它们分别制作下拉菜单,每个菜单都有各自的标题。

或者我会?如果是的话,我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-01 17:10:52

您应该使用列表而不是单独的变量。因此,与其:

代码语言:javascript
复制
lession1 = [category1, category2, ...]
lession2 = [category10, category11, ...]

使用:

代码语言:javascript
复制
lessons = [
    [category1, category2, ...],
    [category10, category11, ...]
]

因此,您可以遍历模板中的所有lessions:

代码语言:javascript
复制
{% for lesson in lessons %}

  {% for content in lesson %}
    <div class="col-md-9 contents" id="{{content[0]}}">
     {{content[2] | safe}}
    </div>
  {% endfor %}

{% endfor %}

编辑:

如果您有变量x1,x2,x3,x4,...,x20,那么拥有一个列表而不是单独的变量总是更好和可能的。

代码语言:javascript
复制
lessons = [
    [
        ['reference-titel', 'part-titel', """content"""],
        ['reference-titel2', 'part-titel2', """content"""],
        [...]
    ],
    [
        ['reference-tite10', 'part-tite100', """content"""],
        ['reference-titel11', 'part-tite200', """content"""],
        [...]
    ]
]

template = `{% for lesson in lessons %}
    <div class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">
          The Web and Basic HTML
          <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
          {% for content in lesson %}
              <li><a href="#{{content[0]}}">{{content[1]}}</a></li>
          {% endfor %}
        </ul>
    </div>
{% endfor %}`

为了提高可读性,您可以定义一个类而不是最内部的数组:

代码语言:javascript
复制
class Drop:
    def __init__(self, reference, part, content):
        self.reference = reference
        self.part = part
        self.content = content

lessons = [
    [
        Drop('reference-titel', 'part-titel', """content"""),
        Drop('reference-titel2', 'part-titel2', """content"""),
        Drop(...)
    ],
    [
        Drop('reference-tite10', 'part-tite100', """content"""),
        Drop('reference-titel11', 'part-tite200', """content""")
    ]
]

template = `{% for lesson in lessons %}
    <div class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">
          The Web and Basic HTML
          <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
          {% for content in lesson %}
              <li><a href="#{{content.reference}}">{{content.part}}</a></li>
          {% endfor %}
        </ul>
    </div>
{% endfor %}`
票数 1
EN

Stack Overflow用户

发布于 2016-01-02 08:39:42

@hege_hegedus给我指明了正确的方向。我把所有不同的变量放在一个大列表中,比如:

lesson = [ [ ['reference-titel', 'part-titel', """content"""], ['reference-titel2', 'part-titel2', """content"""], [...] ], [ ['reference-tite10', 'part-tite100', """content"""], ['reference-titel11', 'part-tite200', """content"""], [...] ] ]

然后,我在彼此内部使用了两个循环,例如:

{% for items in lesson %} {% for content in items %} <div class="col-md-9 contents" id="{{content[0]}}"> {{content[2] | safe}} </div> {% endfor %} {% endfor %}

这给了我我想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34558065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档