Похоже, препроцессор SHPAML не вызывается ДО Django. Обычно я пишу все свои документы в SHPAML с расширением .shpaml, а затем конвертирую их в Django с расширением .html, а затем позволяю Django творить чудеса. Таким образом, вы захотите, чтобы операторы вроде «extends» и «include» ссылались на документ .html, который уже был предварительно обработан.
Ваш базовый документ shpaml будет выглядеть примерно так:
html
body
#main_page
{% block body %}
{% endblock %}
И тогда документ, который расширяет его, будет выглядеть примерно так:
{% extends 'base.html' %}
{% block body %}
p
This is a paragraph about {{ book }}...
{% endblock %}
И затем вы хотите предварительно обработать их ДО того, как Джанго их увидит. Я обычно препроцессирую их скриптом Python прямо перед выполнением «manage.py runserver».