HTML 中的 Python : Iterating over several lists by changing the name of a variable

标签 python html

我对此很陌生,所以如果问题的级别较低,请原谅。

我正在尝试以列表变量的形式浏览 21 个类(class)笔记,获取每个类(class)笔记的内容,每个类(class)笔记包含几个子类别。这些将通过 HTML 显示在网页中。

类(class)笔记被命名为lesson1, lesson2, ... lesson21

我的代码是这样的:

    {% 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 个列表。

附加信息:

我收到的第一个答案很好,但对我来说不是很好,因为我的列表已经是列表的列表。 即

类(class) 1 = [ ['引用标题', '部分标题', """内容"""], ['reference-titel2', 'part-titel2', """内容"""], [……] ]

而且,我正在上面构建一个下拉菜单,它看起来像这样:

      `<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 课的所有不同子类别放入一个非常大的子类别列表中,我将无法为它们制作单独的下拉菜单,每个都有他们自己的标题。

或者我会?如果是这样,我该怎么做?

最佳答案

您应该使用列表而不是单独的变量。所以不是:

lession1 = [category1, category2, ...]
lession2 = [category10, category11, ...]

使用:

lessons = [
    [category1, category2, ...],
    [category10, category11, ...]
]

因此您可以遍历模板中的所有部分:

{% 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,那么使用列表而不是单独的变量总是更好并且可能。

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 %}`

为了可读性,您可以定义一个类而不是最里面的数组:

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 %}`

关于HTML 中的 Python : Iterating over several lists by changing the name of a variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558065/

相关文章:

Python - 类型对象 'str' 没有属性 'string'

Python(BeautifulSoup) - 从 &lt;script&gt; 获取 href

python - 属性错误 : 'module' object has no attribute 'ORB'

android - 如何在不影响长度较小的数据的情况下减少html css中冗长数据的宽度?

ajax - 当 AJAX 混用时,SEO 文件源来自哪里?

python - 使用 setuptools 将扩展模块作为源分发

javascript - 通过对 Flask 的函数调用更新值

javascript - Redux thunk : how to await completion of an async action

jquery - scrollTop() 在 Firefox 中返回 0,但在 Chrome 中不返回

javascript - 验证表单,空字段警告消失,持续约 3 毫秒