Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML中的Python:通过更改变量名称来迭代多个列表_Python_Html - Fatal编程技术网

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

HTML中的Python:通过更改变量名称来迭代多个列表,python,html,Python,Html,我在这方面还不太熟悉,所以如果问题的层次很低,请原谅 我试图以列表变量的形式浏览21个课堂讲稿,得到每个课堂讲稿的内容,每个课堂讲稿都包含几个子类别。这些将通过HTML显示在网页中 课程笔记的名称为第1课,第2课第21课 我的代码如下所示: {% for i in range(1, 22) %} {% for content in "lesson" + "str(i)" %} <div class="col-md-9 contents" id="{{c

我在这方面还不太熟悉,所以如果问题的层次很低,请原谅

我试图以列表变量的形式浏览21个课堂讲稿,得到每个课堂讲稿的内容,每个课堂讲稿都包含几个子类别。这些将通过HTML显示在网页中

课程笔记的名称为
第1课
第2课
<代码>第21课

我的代码如下所示:

    {% 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 %}
      `<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, ...]
使用:

因此,您可以迭代模板中的所有选项:

{% for lesson in lessons %}

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

{% 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 %}`
类删除:
定义初始(自我、参考、部分、内容):
self.reference=reference
self.part=部分
self.content=内容
课程=[
[
删除('reference-titel'、'part-titel'、'content'),
删除('reference-titel2'、'part-titel2'、'content'),
下降(…)
],
[
删除('reference-tite10'、'part-tite100'、'content'),
删除('reference-titel11','part-tite200','content')
]
]
模板=`{%用于课程%}
    {第%课中的内容为%}
  • {%endfor%}
{%endfor%}`
@Hegeu hegedus为我指明了正确的方向。我将所有不同的变量放在一个大列表中,如:

课程=[
[
['reference-titel','part-titel','content'],
['reference-titel2','part-titel2','content'],
[...]
],
[
['reference-tite10','part-tite100','content'],
['reference-titel11','part-Titel200','content'],
[...]
]
]

然后我使用了两个for循环,它们彼此之间类似:

{%用于第%课中的项目]
{项目%中的内容为%1}
{{content[2]| safe}
{%endfor%}
{%endfor%}


这给了我想要的。

@hege_hegedus:谢谢你的回答。但是,由于我的列表已经是列表列表,这个解决方案对我来说是有问题的。您仍然可以拥有列表列表,并且更具可读性。顺便问一下,你使用什么样的模板引擎?你可以通过点击勾号来接受你最喜欢的答案,这样问题就接近了谢谢。但这虽然有帮助,但对我来说还不够。至少我不这么认为。我在问题中添加了更多信息。你认为你能对此发表评论吗?谢谢你,谢谢你的帮助,谢谢你花了这么多时间!最后,我创建了一个名为
lesson
的大列表,就像你建议的那样,然后在彼此之间运行两个for循环:
{%forlesson%}{%foritems%}{%foritems%}{%content[2]|safe}{%endfor%}{%endfor%}
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 %}`