Django-Autocomplete-Light Widget 在 Django-Rest-Framework 中导致加载时间过长
Django-Autocomplete-Light Widget causing long loading times in Django-Rest-Framework
我目前正在使用 Django-Rest-Framework 开发 API。 API 本身工作正常,我现在正在尝试对资源实施过滤。这也很有魅力,但问题是,当我尝试使用 Django-Autocomplete-Light 中的 ModelSelect2-Widget 来处理 Browsable API 中关系的过滤时,(因为那里可以有很多可能的选项可供选择,如果需要,我正在使用自动完成小部件动态加载更多选项)由于脚本,浏览器突然加载页面的时间太长。 (Firefox居然问要不要关机jQuery)
我设法将问题缩小到 DRF 使用的脚本和 DAL 需要的脚本之间的某种问题。
这些是由 Django Rest Framework (Source) 随页面加载的脚本:
<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 (Source for autocomplet.init.js and jquery.init.js and Source for select2.js and 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 运行时分析的屏幕截图:
脚本需要“美化”的数据越多,情况就越糟。
有人知道如何解决这个问题吗?
所以我自己解决了这个问题...
我只是把autocomplete.init.js
和select2.js
的内容放在了$(document).ready(function(){...})
中。为什么?我不知道,但它似乎工作得很好。 ¯\_(ツ)_/¯
如果有人知道对此的解释,请随时分享。
我目前正在使用 Django-Rest-Framework 开发 API。 API 本身工作正常,我现在正在尝试对资源实施过滤。这也很有魅力,但问题是,当我尝试使用 Django-Autocomplete-Light 中的 ModelSelect2-Widget 来处理 Browsable API 中关系的过滤时,(因为那里可以有很多可能的选项可供选择,如果需要,我正在使用自动完成小部件动态加载更多选项)由于脚本,浏览器突然加载页面的时间太长。 (Firefox居然问要不要关机jQuery)
我设法将问题缩小到 DRF 使用的脚本和 DAL 需要的脚本之间的某种问题。
这些是由 Django Rest Framework (Source) 随页面加载的脚本:
<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 (Source for autocomplet.init.js and jquery.init.js and Source for select2.js and 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 运行时分析的屏幕截图:
有人知道如何解决这个问题吗?
所以我自己解决了这个问题...
我只是把autocomplete.init.js
和select2.js
的内容放在了$(document).ready(function(){...})
中。为什么?我不知道,但它似乎工作得很好。 ¯\_(ツ)_/¯
如果有人知道对此的解释,请随时分享。