我是Django的新手。我想知道使用块继承(对于多个script
或style
标签)多次在模板中重复一段html的最佳方法是什么,我可以使用视图通过模板的数组。
我认为这可以通过使用多重继承之类的东西来完成,但我不知道如何开始实现这样的事情。
答案 0 :(得分:1)
如果我理解正确,我认为你可以这样做。
def ExampleView(request):
items=___ #Whatever objects you want to work on
return render(request, 'template.html', {'items': items,})
然后是你的模板。
template.html
...
{% for item in items %}
<-- Whatever you want to do for each item -->
{% endfor %}
如果我误解了,请告诉我。
答案 1 :(得分:1)
嗯,你的问题对我来说还不清楚,但一般来说这就是你在Django中制作模板的方式。
您有一个名为base.html
的主文件,它是所有其他模板将扩展/继承它的基本模板。在base.html
中,您可以定义block
,在子模板中,您可以向该块添加信息:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Title</title>
<link rel="stylesheet" href="{{ STATIC_URL }}css/main.css">
{% block additional_css %}{% endblock %}
<script src="{{ STATIC_URL }}js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
</head>
<body>
{% block content %}{% endblock %}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
{% block additional_js %}{% endblock %}
</body>
</html>
因此,您可以在示例中看到,我定义了3个块:additional_css
,content
和additional_js
。在您的子模板中,您可以扩展这些块并包含您想要的任何信息,例如您有一个模板名称child.html
:
{% extends "base.html" %}
{% block additional_css %}
<link rel="stylesheet" href="{{ STATIC_URL }}css/child.css">
{% endblock %}
{% block content %}
<h1>Welcome to my site!</h1>
{% endblock %}
如果你想在列表中将列表传递给模板,那就是直截了当。请说明您的视图中传来的列表调用all_js_files
,您的模板可以包含:
{% block additional_js %}
{% for js_file in all_js_files %}
<script src="{{ js_file }}"></script>
{% endfor %}
{% endblock %}
只是为了给你一个基本的想法。