Templates 如何重复Jinja2模板的各个部分
我意识到有人问过几个类似的问题,但这些问题与我正在尝试做的事情无关,而且我几乎是一个完全的初学者,所以答案似乎比我认为我应该做的更高级 我正在用Python代码将一个Jinja2模板实现到一个html页面中,该页面是我在学习本课程时一直保存的笔记 所以 我尝试模板化并重复的html块具有以下结构:Templates 如何重复Jinja2模板的各个部分,templates,jinja2,Templates,Jinja2,我意识到有人问过几个类似的问题,但这些问题与我正在尝试做的事情无关,而且我几乎是一个完全的初学者,所以答案似乎比我认为我应该做的更高级 我正在用Python代码将一个Jinja2模板实现到一个html页面中,该页面是我在学习本课程时一直保存的笔记 所以 我尝试模板化并重复的html块具有以下结构: <h1>Stage Number</h1> <div class = "lesson"> <h2>Lesson Number</h2>
<h1>Stage Number</h1>
<div class = "lesson">
<h2>Lesson Number</h2>
<div class="concept">
<div class="concept-title"> Title </div>
<div class="concept-description">
<p>Description paragraph</p>
<p>Description paragraph</p>
</div>
<div class="concept-title"> Title</div>
<div class="concept-description">
<p>Description paragraph</p>
</div>
</div>
</div>
阶段编号
课号
标题
说明段落
说明段落
标题
说明段落
对于每个阶段,课程编号各不相同,每个标题有不同数量的描述段落 我的代码在Github上(这是一个编辑版本): 我的main.py文件有模板代码,应该在index.html文件中实现 这门课程对我来说有点过火了,重新观看视频或查找其他关于模板制作的YouTube教程并没有什么帮助,因为很多课程都比我现在看起来要高级
任何关于如何理顺变量以便它们与index.html文件正确关联的帮助或指针都将不胜感激。当我假装没有那么多输入时,我可以让一个简单的单变量工作,并在运行应用程序时显示出来,但由于我现在和需要的复杂性,它无法正常工作。到目前为止,您对代码的想法似乎基本正确。 缺少的一点是,您需要具有序列的数据类型来扩展它,以实现您想要的功能 每节课都有一个概念列表和相关描述
concept1 = {
'name' : 'concept1',
'description1' : 'This is the description for concept1!',
}
lesson1 = {
'name' : 'lesson1',
'concepts': [concept1, concept2] #the list here lets us have more than one value
}
然后,每个阶段都是一个包含不同课程列表的数据结构
stage1 = {
'name' : 'stage1',
'lessons': [lesson1, lesson2],
}
最后,将所有这些不同阶段填充到模板\u值中
template_values = {
'stages' : [stage1, stage2],
}
然后需要模板来访问嵌套数据:
{% for stage in stages %}
//do things with this particular stage
{% for lesson in stage['lessons'] %}
//do things with this lesson
{% for concept in lesson['concepts'] %}
//do things with individual concepts
{% endfor %}
{% endfor %}
{% endfor %}
注意:尚未测试模板,因此可能在访问字典时出错。到目前为止,似乎您对代码的理解基本正确。 缺少的一点是,您需要具有序列的数据类型来扩展它,以实现您想要的功能 每节课都有一个概念列表和相关描述
concept1 = {
'name' : 'concept1',
'description1' : 'This is the description for concept1!',
}
lesson1 = {
'name' : 'lesson1',
'concepts': [concept1, concept2] #the list here lets us have more than one value
}
然后,每个阶段都是一个包含不同课程列表的数据结构
stage1 = {
'name' : 'stage1',
'lessons': [lesson1, lesson2],
}
最后,将所有这些不同阶段填充到模板\u值中
template_values = {
'stages' : [stage1, stage2],
}
然后需要模板来访问嵌套数据:
{% for stage in stages %}
//do things with this particular stage
{% for lesson in stage['lessons'] %}
//do things with this lesson
{% for concept in lesson['concepts'] %}
//do things with individual concepts
{% endfor %}
{% endfor %}
{% endfor %}
注意:尚未测试模板,因此可能在访问字典时出错。如果我理解正确,您当前有一个模板可以从
模板\u值
字典中获取一些值,此模板可以按照您的需要呈现页面。但是,看起来您目前只能使用固定数量的值。扩展此模板以使您可以将多个阶段或课程发送到模板是否有问题?是的,是的!这是我的问题,如果你说我已经在那里的代码到目前为止看起来是正确的,我也不确定。好的,我几个月前问过这个问题,我想我在这里问过之后就知道了,但无法让它工作。我休息了一下,我想我已经很接近了,但我所拥有的仍然不起作用。我已经将我的项目添加到Github中:如果您能帮助我解释为什么main.py上定义的变量不能与index.html模板一起使用,我将不胜感激。提前感谢所有费心阅读这一大堆混乱和措词不当的问题的人!我要完成这件事!在main.pyself.render(“index.html”,stages=stages,name=name,lessons=lessons)
。如果问题比这更复杂的话,你可能想考虑通过把你的代码浓缩成问题部分来在这里提出一个新的问题。您可能还想将*.pyc
文件添加到gitignore文件中。如果我理解正确,您当前有一个模板,可以从模板\u值
字典中获取一些值,此模板可以按照您的需要呈现页面。但是,看起来您目前只能使用固定数量的值。扩展此模板以使您可以将多个阶段或课程发送到模板是否有问题?是的,是的!这是我的问题,如果你说我已经在那里的代码到目前为止看起来是正确的,我也不确定。好的,我几个月前问过这个问题,我想我在这里问过之后就知道了,但无法让它工作。我休息了一下,我想我已经很接近了,但我所拥有的仍然不起作用。我已经将我的项目添加到Github中:如果您能帮助我解释为什么main.py上定义的变量不能与index.html模板一起使用,我将不胜感激。提前感谢所有费心阅读这一大堆混乱和措词不当的问题的人!我要完成这件事!在main.pyself.render(“index.html”,stages=stages,name=name,lessons=lessons)
。如果问题比这更复杂的话,你可能想考虑通过把你的代码浓缩成问题部分来在这里提出一个新的问题。您可能还想将*.pyc
文件添加到gitignore文件中。非常感谢!!我很快就能克服这一点,这将是光荣的。非常非常感谢!非常感谢你!!我很快就能克服这一点,这将是光荣的。非常非常感谢!