我对此很陌生,所以如果问题的级别较低,请原谅。
我正在尝试以列表变量的形式浏览 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)"
留在那儿,这样你就可以看到我所希望的去做。当然,这是我想要 lesson1
、lesson2
等的地方。
所以你可以希望看到我正在尝试做什么,但我不知道该怎么做,也无法在任何地方找到答案。如何让第二个 for
循环运行 lesson1
、lesson2
等直到 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/