В настоящее время я работаю над 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: Чем больше данных требуется для предварительной обработки скриптом, тем хуже.
Кто-нибудь видит, как это решить?