Содержащийся Javascript в загруженном шаблоне django с ajax не оценивается? - PullRequest
0 голосов
/ 01 марта 2019

Это дополнительный вопрос после моего предыдущего ( Загрузка нескольких шаблонов в базовый шаблон в 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.Но что я должен использовать вместо этого?Если есть общий более элегантный способ сделать что-то подобное, я также благодарен за любые советы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...