我需要在我的Django應用程序中擴展頁面的基本模板,但是需要從基礎中的這個新頁面中排除一些HTML元素。刪除它們的最佳方法是什麼?我只是用JQuery刪除元素?如何覆蓋Django基本模板
回答
您可以使用模板塊來實現此目的。例如,在base.html文件,圍繞在一個名爲塊中的HTML元素:
{% block a_unique_name %}<div>This is only relevant in base.html</div>{% endblock %}
塊中的HTML只會如果沒有其他模板覆蓋它被使用。您可以覆蓋在你的子模板是這樣的:
{% extend base.html %}
{% block a_unique_name %}{% endblock %}
現在將使用從子模板中的值將覆蓋從base.html文件的默認值。
創建沒有這些元素的基本模板。用這些元素創建子模板。從基本模板繼承所有頁面,形成此子模板和此特定頁面。
另一種方法是將這些元素放入基本模板中的塊中。
{# base template #}
{% block override_me %}
<elem1 /><elem2 />
{% endblock %}
{# child template #}
{% block override_me %}{% endblock %}
這不一定是個壞主意。如果代碼必須在幾個子模板中重新創建,以避免將其放入base.html,則違反了DRY原則。使用塊更好。 –
@George Cummins用JS去除元素不一定是個壞主意? Ooook。並且請顯示DRY違規的地方(請注意,這種方法在[django網站](https://github.com/django/djangoproject.com/tree/master/django_website/templates)中使用)。 – DrTyrsa
顯然,我不清楚您的「不良想法」評論針對的是原始問題的哪一部分。刪除子模板中的元素不是問題,但我同意通過JS刪除元素並不理想。如果你重新回答你的答案的第一段,我可以刪除我的downvote。 –
- 1. 如何覆蓋「form_div_layout」基本模板?
- 2. django覆蓋管理模板
- 3. Django部件覆蓋模板
- 4. 如何覆蓋notFound模板?
- 5. 如何覆蓋@ Html.LabelFor模板?
- 6. Django admin password_change_form模板由django註冊應用模板覆蓋
- 7. 難度覆蓋Django管理模板
- 8. 覆蓋django-allauth的默認模板
- 9. Django-Oscar覆蓋模板標籤
- 10. Django的:擴展覆蓋的模板
- 11. 覆蓋Django中的brabeion模板路徑
- 12. 覆蓋基類模板類方法
- 13. 如何使用基本模板在Django
- 14. 躋覆蓋模板
- 15. TYPO3模板覆蓋
- 16. Joomla模板覆蓋
- 17. Sylius覆蓋模板
- 18. FOSUserBundle - 覆蓋模板
- 19. 覆蓋EditorForModel模板
- 20. 如何覆蓋django郵差的電子郵件模板?
- 21. 如何覆蓋Django中包含的模板塊?
- 22. 我如何覆蓋django contrib評論模板?
- 23. 如何覆蓋django模板渲染方法處理
- 24. Django - 管理員 - 如何覆蓋Model Proxy的change_list模板?
- 25. 如何覆蓋django中的堆棧跟蹤模板?
- 26. 如何覆蓋jbot已覆蓋的模板?
- 27. 根據Django版本覆蓋管理模板
- 28. Magento的2 - 如何覆蓋塊模板
- 29. 如何覆蓋Sonata Media Bundle模板?
- 30. Angular 2:如何覆蓋ng-bootstrap模板
很好的答案,謝謝! – user995469