Django на самом деле не обрабатывает динамически, в том числе, как PHP или другие языки. Вместо этого у вас должен быть базовый шаблон и использовать наследование шаблонов и блоки для выполнения того, что вы пытаетесь сделать.
Таким образом, ваш app2.html будет иметь такое же динамическое содержимое, но в app1.html будет место для переопределения или вставки.
app2.html:
{% block 'title' %}
{{ app2.title }}
{% endblock %}
{% block 'content' %}
{% endblock %}
Шаблон App1 может затем расширить App2:
app1.html:
{% extends "app2.html" %}
{% block 'title' %}
Actually App 1!
{% endblock %}
{block 'content' %}
...
{% endblock %}
К сожалению, обработка включений все еще является новой в Django и противоречит лучшим практикам из того, что я видел в документации и сообществе.