在我的core.html中我有一個標記爲javascript的塊。如果我可以將更多行添加到此塊而不覆蓋其中的所有內容,那將是非常好的。我們可以附加到{%block%}而不是覆蓋嗎?
95
A
回答
158
{% block javascript %}
{{ block.super }}
... more content ...
{% endblock %}
4
使用block.super
工作正常延伸時的模板,但沒有得到很好的包括一個時,即:
{% extends "base.html" %} vs. {% include "partial.html" %}
說你想在中間的模板你的頁面,你也希望它在頁面末尾的塊中添加一些JavaScript:在包含的模板中調用block.super
將崩潰。
參考Django問題#7324,#12008,#13399和related update to the documentation。參看include tag注:
的包括標籤應被視爲「呈現此子模板,幷包括HTML」,而不是「分析此子模板,包括它的內容就好像它是母公司的一部分」的實現。這意味着包含模板之間不存在共享狀態 - 每個包含都是完全獨立的呈現過程。
在包含塊之前對塊進行評估。這意味着包含來自另一個塊的模板將包含已經評估和渲染的塊 - 而不是可以被例如擴展模板覆蓋的塊。
在這種情況下,我建議使用django-sekizai,至極允許你做這樣的事情:
{% load sekizai_tags %}
⎧ <p>Some content</p>
<p>Some content</p> | {% addtoblock "js" %}
| <script type="text/javascript">
{% include "partial.html" %} -> ⎨ alert("Hello django-sekizai");
| </script>
<p>Some more content</p> ⎩ {% endaddtoblock %}
{% render_block "js" %}
我開始這個項目的主要原因是缺乏在django和django-cms中的良好媒體(css/js)框架。是的,django中的表單中使用了Media類,但實際上並不適用。通常前端的人想要決定包含css和javascript文件,他們不希望編輯Python文件來改變,我也不希望他們改變我的Python文件。因此,您需要允許您編輯現在位置之前或之後的模板內容。另外我想重複刪除。結果我寫了django-sekizai,這確實如此。它與塊相似,只是擴展它們而不是繼承它們。
相關問題
- 1. Rails content_for覆蓋而不是附加
- 2. 我可以將CBitmapButton附加到父CWnd而不是父CDialog嗎?
- 3. 追加而不是覆蓋
- 4. C++ std :: string附加覆蓋而不是追加
- 5. 爲什麼我不添加到文件而不是覆蓋?
- 6. 我可以告訴git pull覆蓋而不是合併?
- 7. 我們可以覆蓋父網站的web.config嗎?
- 8. 我們可以用另一個覆蓋WPF元素嗎?
- 9. 我們可以用相機預覽覆蓋點擊圖像嗎?
- 10. С++我們可以創建類函數的覆蓋嗎?
- 11. 我可以用sun.misc.Unsafe覆蓋對象嗎?
- 12. 我可以手動覆蓋Changeset ID嗎?
- 13. Python的替代和覆蓋,而不是附加
- 14. Scrapy覆蓋json文件而不是附加文件
- 15. 我可以讓WPF爲IsMouseOver覆蓋和覆蓋元素嗎?
- 16. 我們可以將cordova InAppBrowser適合HTML的一部分,而不是覆蓋整個屏幕嗎?
- 17. 如何添加的PropertyDescriptor一類而不是覆蓋它們?
- 18. Firebase覆蓋現有記錄而不是追加它們
- 19. Hbase Bulkload追加數據而不是覆蓋它們
- 20. 「a」覆蓋文件而不是追加
- 21. Python覆蓋字典而不是追加
- 22. MongoDB的添加而不是覆蓋它
- 23. 你如何覆蓋而不是附加到Android中的文本文件?
- 24. cakephp pages_controller擴展而不是覆蓋,這可能嗎?
- 25. SecurityBundle use_forward註冊之後而不是覆蓋RegistrationController可能嗎?
- 26. 我們可以使用按鈕而不是集合視圖嗎?
- 27. AVAudioRecorder:我們可以記錄而不保存到文件中嗎?
- 28. 而不覆蓋
- 29. 是否可以覆蓋NSUserDefault?
- 30. 我可以使用awk覆蓋輸出到屏幕嗎?
很好,謝謝! :) – PKKid 2009-11-12 18:51:59