0

我是 Django 的新手。script我想知道最好的方法是使用块继承(对于多个或标签)在模板中多次重复一段 html,style我可以使用视图将数组传递给模板。

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

4

2 回答 2

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 %}

如果我误解了,请告诉我。

于 2013-07-24T16:40:03.337 回答
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 %}

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

于 2013-07-24T16:43:41.537 回答