Это дополнительный вопрос после моего предыдущего ( Загрузка нескольких шаблонов в базовый шаблон в django по нажатию кнопки ).Смотрите там js-пример того, что я пытаюсь имитировать с помощью шаблонов django.
У меня есть несколько приложений (app1.html, app2.html и т. Д.), Которые я хочу, чтобы пользователь могвыбрать, какие из них загрузить.Все они расширяют empty_app.html, который выглядит следующим образом:
<div class="window">
<div class="window-head">
{% block header %}
// This is the header of the app.
{% endblock %}
</div>
<div id="module-content" class="window-content">
{% block content %}
// This is the content of the app.
{% endblock %}
</div>
</div>
{% block resources %}
//Here come app-specific javascripts
{% endblock %}
И мой base.html, в котором есть 4 заполнителя, куда может приземлиться такое приложение:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="{% static 'some.css' %}">
<title>Cool Apps</title>
</head>
<body>
<div id="viewer-content">
<div id="module-1" class="droparea-empty">
</div>
<div id="module-2" class="droparea-empty">
</div>
<div id="module-3" class="droparea-empty">
</div>
<div id="module-4" class="droparea-empty">
</div>
</div>
<script src="{% static 'assets/js/jquery.min.js' %}">
//Some js...
</script>
</body>
</html>
Мне сказали использоватьajax для динамического извлечения django-шаблонов.Итак, теперь у меня есть такая функция:
function api_get_module(url, div) {
switch (url) {
case 'app1':
url = "{% url 'api_get_app1' %}"
break;
case 'app2':
url = "{% url 'api_get_app2' %}"
break;
case 'app3':
url = "{% url 'api_get_app3' %}"
break;
case 'app4':
url = "{% url 'api_get_app4' %}"
break;
default:
}
$.ajax({
type: 'GET',
url: url,
dataType: 'html',
contentType: 'html',
headers: {
'api-key': my_key
},
success: function(result) {
div.innerHTML = result;
}
});
}
api_get_app1,2,3,4 определены в файле views.py так:
def api_get_app1(request):
t = get_template('my_django_app/app1.html')
html = t.render({})
return HttpResponse(html)
Теперь моя проблема в том, чтохотя HTML-код будет вставлен и правильно отображен, javascripts в {% block resources%} не будет оцениваться.Я предполагаю, что это 99% div.innerHTML = result
.Но что я должен использовать вместо этого?Если есть общий более элегантный способ сделать что-то подобное, я также благодарен за любые советы!