учебник по django-autocomplete-light: select2 не является ошибкой функции

У меня возникли проблемы при использовании dal, и я попытался создать простой пример.

Я сделал почти то же самое, что и Django autocomplete light: поле не заполнено а также приложил ответ по ссылке.

Вот шаги, которые я прошел:

Шаг 1) Когда я добавляю вот так в заголовок html (точно так же, как ответ выше):

    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script>
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script>

Ошибка консоли инспектора браузера выглядит так:

Uncaught ReferenceError: yl is not defined(anonymous function) @ autocomplete.init.js:75select2.js:117 
Uncaught ReferenceError: yl is not defined(anonymous function) @ select2.js:117

Шаг 2) Поэтому я добавил jquery.js и другие файлы js в библиотеку dal:

    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/jquery.init.js"></script>
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/jquery.init.js"></script>
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script>
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script>

И ошибка изменилась так:

select2.js:66 Uncaught TypeError: $(...).select2 is not a function(anonymous function) @ select2.js:66dispatch @ jquery.js:4435elemData.handle @ jquery.js:4121trigger @ jquery.js:4350(anonymous function) @ jquery.js:4901each @ jquery.js:374each @ jquery.js:139trigger @ jquery.js:4900initialize @ autocomplete.init.js:45each @ jquery.js:374each @ jquery.js:139(anonymous function) @ autocomplete.init.js:50fire @ jquery.js:3099fireWith @ jquery.js:3211ready @ jquery.js:3417completed @ jquery.js:3433

Шаг 3) И последнее, я нашел эти два плагина и добавил, и это сработало!

    Plugins of [Step 2)] + 
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

Итак, вот мои вопросы:

A) Должен ли я добавить все вышеперечисленные плагины? Например, в плагинах [шаг 3) есть два файла select2.js, и я сбит с толку и задаюсь вопросом, работают ли они по-разному (если я удалю один из них, это не сработает).

B) В соответствии с вопросом Django autocomplete light: поле не заполнено, не должен работать шаг 2? Почему возникает ошибка?

C) В этом примере кода часть следующего кода кажется вообще не работающей. Если не с учетной записью администратора, внешний ключ не отображается в текстовом поле, другими словами, в списке ничего не может быть найдено. (из пособия, это позволяет использовать автозаполнение вне админ)

{% block footer %}
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{ form.media }}
{% endblock %}

@ Я также проверил, что django-autocomplete-light не работает - select2 не является функцией, и перестановка установленного приложения не сработала.


person RENO    schedule 26.07.2016    source источник


Ответы (2)


Сначала вам нужно включить Jquery, а затем вашу стороннюю библиотеку для поля выбора.

  • Select2.min.js (уменьшенная версия файла JS)
  • Select2.min.css (уменьшенная версия файла CSS)
  • Затем импортируйте autocomplete.js
person TARUN KUMAR    schedule 22.11.2017

первый файл библиотеки select2 не существует. выбранная ссылка поднять Ошибка хоста не найдена

Библиотека select2 такая же, если вы прокомментируете первую, она не вызвала ошибку. вы можете загрузить библиотеку в свою статическую папку.

также ссылка jquery в последнем примере не существует. вы можете скачать jquery и поместить его в статическую папку.

person vorujack    schedule 30.10.2017