重复Django模板中的模式

时间:2013-07-24 16:15:19

标签: django django-templates django-views

我是Django的新手。我想知道使用块继承(对于多个scriptstyle标签)多次在模板中重复一段html的最佳方法是什么,我可以使用视图通过模板的数组。

我认为这可以通过使用多重继承之类的东西来完成,但我不知道如何开始实现这样的事情。

2 个答案:

答案 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_csscontentadditional_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 %}

只是为了给你一个基本的想法。