I have a base.html file which has some 'random' html code and I have the following code:
{% load staticfiles %} <!DOCTYPE html> <html> <head> ... {% block extra_js_top %}{% endblock %} </head> ... </html>
In my index.html file I extend base.html and I load some extra javascript files:
{% extends "base.html" %} ... {% block extra_js_top %} <script type="text/javascript" src="{% static "js/somejs.js" %}"></script> {% endblock %}
The problem is that extra javascript doesn't load because of the static var. It doesn't load even if I extend base.html which have the {% load staticfiles %}
inside the template. Finally I solved the problem adding one more {% load staticfiles %}
at index.html.
My question is why we should add {% load staticfiles %}
for every template we use even if we extend a file that has it already?
Yes you can extend different or same templates.
For a hands-on example of creating HTML pages with templates, see Tutorial 3. Django defines a standard API for loading and rendering templates regardless of the backend. Loading consists of finding the template for a given identifier and preprocessing it, usually compiling it to an in-memory representation.
extends tag is used for inheritance of templates in django. One needs to repeat the same code again and again. Using extends we can inherit templates as well as variables. Syntax: {% extends 'template_name.html' %}
As per Django's latest documentation, this is done for the sake of maintainability and sanity
When you load a custom tag or filter library, the tags/filters are only made available to the current template – not any parent or child templates along the template-inheritance path.
For example, if a template foo.html has {% load humanize %}, a child template (e.g., one that has {% extends "foo.html" %}) will not have access to the humanize template tags and filters. The child template is responsible for its own {% load humanize %}.
This is a feature for the sake of maintainability and sanity.
Because that's the way template tags work. You need to load each library for every template file that uses them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With