Виджет Django-Autocomplete-Light вызывает долгую загрузку в Django-Rest-Framework

В настоящее время я работаю над API с использованием Django-Rest-Framework. Сам API работает нормально, и теперь я пытаюсь реализовать фильтрацию ресурсов. Это тоже работает как шарм, но проблема в том, что, когда я пытаюсь использовать ModelSelect2-Widget из Django-Autocomplete-Light, чтобы обрабатывать фильтрацию отношений в Browsable API, (поскольку может быть много из возможных вариантов на выбор, я использую виджет автозаполнения для динамической загрузки дополнительных параметров, если это необходимо) браузеру внезапно требуется слишком много времени для загрузки страницы из-за сценариев. (Firefox на самом деле спрашивает, следует ли ему закрывать jQuery)

Мне удалось сузить проблему до какой-то проблемы между скриптами, которые использует DRF, и теми, которые нужны DAL.

Это скрипты, которые загружаются вместе со страницей с помощью Django Rest Framework (Источник):

  <script>
    window.drf = {
      csrfCookieName: "{{ csrf_cookie_name|default:'csrftoken' }}"
    };
  </script>
  <script src="{% static "rest_framework/js/jquery-1.12.4.min.js" %}"></script>
  <script src="{% static "rest_framework/js/ajax-form.js" %}"></script>
  <script src="{% static "rest_framework/js/csrf.js" %}"></script>
  <script src="{% static "rest_framework/js/bootstrap.min.js" %}"></script>
  <script src="{% static "rest_framework/js/prettify-min.js" %}"></script>
  <script src="{% static "rest_framework/js/default.js" %}"></script>
  <script>
    $(document).ready(function() {
      $('form').ajaxForm();
    });
  </script>

И Django-Autocomplete-Light (Источник для autocomplet.init.js и jquery.init.js и Источник для select2.js и select2.full.js):

<script src="{% static 'autocomplete_light/jquery.init.js' %}"></script>
<script src="{% static 'autocomplete_light/autocomplete.init.js' %}"></script>
<script src="{% static 'autocomplete_light/vendor/select2/dist/js/select2.full.js' %}"></script>
<script src="{% static 'autocomplete_light/select2.js' %}"></script>

Проблема, похоже, связана с prettify-min.js и скриптами из DAL, так как я могу прокомментировать один из них, и страница снова работает нормально.

Снимок экрана из анализа времени выполнения Firefox:  Анализ во время выполнения Чем больше данных требуется для предварительной обработки скриптом, тем хуже.

Кто-нибудь видит, как это решить?




Ответы (1)


Так что я как-то сам решил проблему ... Я просто поместил содержимое autocomplete.init.js и select2.js в $(document).ready(function(){...}). Почему? Не знаю, но вроде работает нормально. ¯ \ _ (ツ) _ / ¯

Если кто-то знает объяснение этого, пожалуйста, поделитесь им.

person kater    schedule 17.08.2016