Codejoy
Codejoy

Reputation: 3816

Adding javascript to an extended django template for google analytics

I have a nice little index.html file, it is an extended template and its parent is a base.html file (well in my case base2.html). I was trying to add a google analytics code snippet to some files on my site and it turns out, if I add anything in the tag on my extended templates, it is like the script code is ignored. Is there something I am doing wrong? I know I can add it just fine to base2.html, but then that would track for ever single hit since that is the parent for a lot of my pages on the site.

Upvotes: 3

Views: 4474

Answers (1)

David
David

Reputation: 681

Without seeing the base2.html and index.html, it's pretty tough to answer, but the most likely culprit is that you forgot to put the <script></script> inside of a {% block %} that exists in the parent template. Remember that for template inheritance in Django, the parent defines a "skeleton" of all the blocks, and children must override those blocks— you can use {{ block.super }} to inherit all of the parent template's content for that block, then add any additional content. Any content in the child template that is not in a block in the parent "skeleton" template that it's extending doesn't get rendered.

# base2.html
<body>
    {% block content %}
    {% endblock content %}

    {% block footer_scripts %}
    <script src="foobar"> ...</script>
    {% endblock footer_scripts %}
</body>

If you were to just add this, it wouldn't work:

# index.html - DOES NOT WORK
{% extends 'base2.html' %}
<script>
// GA javascript
</script>

You need to include it in a block:

# index.html - DOES WORK
{% extends 'base2.html' %}
{% block footer_scripts %}
    {{ block.super }}
    <script>
    // GA javascript
    </script>
{% endblock %}

Upvotes: 10

Related Questions