2013-07-24 108 views
0

我是Django的新成員。我想知道什麼最好的方法是使用塊繼承多次重複模板中的一段html(對於多個scriptstyle標記),我可以使用視圖將數組傳遞到模板。在Django模板中重複模式

我在想這可以通過使用像多重繼承的東西來完成,但我不知道如何開始實現這樣的事情。

回答

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

嗯你的問題還不清楚,但一般來說,這是你如何在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 %} 

只給你的基本理念。