0
我正在爲Django編寫一個templatetag軟件包,以便在Django應用程序中輕鬆包括RGraph圖。我可以用Django templatetags覆蓋父模板中的塊嗎?
我對包含javascript的模板有點麻煩,我在我的基本html文件中定義了一個塊,我想要templatetag的模板提供。
這是我的最高水平模板
{% load django_rgraph %}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test Charts</title>
{% block js %}
{% block js.custom %}{% endblock %}
{% endblock %}
</head>
<body>
{% rgraph piechart %}
</body>
</html>
,這是我的新標籤模板
{% extends "django_rgraph/rgraph_base.html" %}
{% block rgraph_chart %}
<script>
window.onload = function() {
var {{ chart.name }} = new RGraph.Pie('{{ chart.name }}', [{% for value in chart.values %}{{ value }}{% if not forloop.last %},{% endif %}{% endfor %}]);
{% for option, value in chart.options.items %}
{{ chart.name }}.Set('{{ option }}', {{ value }});
{% endfor %}
{% if chart.animate %}
RGraph.Effects.Pie.RoundRobin({{ chart.name }});
{% else %}
{{ chart.name }}.Draw();
{% endif %}
}
</script>
{% endblock %}
和完整性,rgraph_base.html看起來像這樣
{% block js.custom %}
{% for js in chart.js %}
<script src="RGraph/js/{{ js }}"></script>
{% endfor %}
{% endblock %}
{% block rgraph_chart %}Insert Chart Here{% endblock %}
我希望這會創建一個html頁面,其中的JavaScript被包含在標題中,而是我牛逼出現在身上,這樣
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test Charts</title>
</head>
<body>
<!-- I was expecting these script tags to be below the title tag -->
<script src="RGraph/js/RGraph.common.core.js"></script>
<script src="RGraph/js/RGraph.common.tooltips.js"></script>
<script src="RGraph/js/RGraph.common.effects.js"></script>
<script src="RGraph/js/RGraph.pie.js"></script>
<script>
window.onload = function() {
var pie1 = new RGraph.Pie('pie1', [10,24,15,82]);
pie1.Set('chart.gutter.left', 30);
pie1.Draw();
}
</script>
</body>
</html>
在此設置下,在新標籤覆蓋在頂層模板中定義的塊模板,我應該能夠使腳本出現在頂部頭標記?
該腳本出現在身體中,因爲rgraph標籤被插入身體。沒有? – akonsu
@akonsu,這就是我要求的,在標籤的模板中有一個與父類中的某個相同名稱的塊,我期待着與普通模板相同的行爲,即,子塊中的塊會覆蓋塊中的塊父母。 –
顯然,Django模板並不像這樣。此外,您所期望的行爲是否正確也值得懷疑。畢竟你只是將你的標籤插入身體。您不是從具有要填充的塊的頂級模板派生而來的。 – akonsu