Решение:
Я должен был заметить это раньше. Любой, кто следует за книгой (или что-то подобное), может помочь этим:
Я поместил файлы в неправильный каталог "stati c": [каталог проекта] / stati c, а не [ каталог проекта] / lists / stati c, где «lists» - это имя созданного Django «app». Меня сбило с толку тот факт, что в обеих этих директориях "stati c" был базовый файл css (который загружался ).
I ' я пытаюсь выучить Django из (очень хорошей) книги .
Это просто добралось до главы , где добавляется немного Javascript. Я не новичок, когда дело доходит до Javascript.
Но с этим я справился с полной буферизацией.
Нам сказали поставить эти строки в конец нашего Django база файлов шаблонов. html:
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/list.js"></script>
<script>
initialize(); // NB this is a simple function in the list.js script
</script>
Примечание для справки, я запускаю это в браузере, используя сервер разработки Django. Функциональные тесты, которые не проходят, вопреки тому, что говорится в книге, должны использовать django.contrib.staticfiles.testing.StaticLiveServerTestCase
.
Все браузеры, которые я пробовал (Firefox, Chrome, Opera), не могут загрузить эти JS файлов. В случае Chrome (консоль) я получаю Status 404 для этих двух файлов, тогда как два. css файла в / в том же каталоге получают Status 200. В случае FF (v. 72) сообщения консоли немного больше crypti c: для обоих файлов консоль сначала выдает озадачивающее сообщение, связанное с MIME: "Сценарий из« http://localhost: 8000 / static / jquery -3.3.1.min. js ”был загружен, хотя его MIME-тип (« text / html ») не является допустимым JavaScript MIME-типом." , а затем сразу же после этого появляется сообщение "Загрузка не удалась для источника «http://localhost: 8000 / статический / jquery -3.3.1.min. js» . "
Я провел довольно много поиска, чтобы найти из того, что может происходить. Я пробовал строки, подобные этой, в рассматриваемом файле шаблона Django:
<script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>
<script LANGUAGE="JavaScript" src="/static/jquery-3.3.1.min.js"></script>
<script type="application/javascript" src="/static/jquery-3.3.1.min.js"></script>
... ничего из вышеперечисленного ничего не меняет.
Сервер Django, на котором я работаю, также говорит 404 ... но только для JS файлов:
[19/Apr/2020 18:19:04] "GET / HTTP/1.1" 200 1451
[19/Apr/2020 18:19:05] "GET /static/jquery-3.3.1.min.js HTTP/1.1" 404 1670
[19/Apr/2020 18:19:05] "GET /static/base.css HTTP/1.1" 200 33
[19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634
[19/Apr/2020 18:19:05] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 117305
[19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634
Подозревая, что я схожу с ума, я дважды проверил и трижды проверил: эти точные JS файлы, с эти точные имена действительно находятся в рассматриваемом каталоге "stati c".
Я не понимаю, что это за материал MIME и как он может блокировать загрузку файла JS так драматически. Для чего бы то ни было, я проверил типы MIME на своем компьютере таким образом:
mike@M17A ~ $ grep 'js' /etc/mime.types
application/javascript js
application/json json
Мне трудно поверить, что это актуально, так как у меня проблемы со всеми 3 браузерами, но есть «Узнать» ссылка "more" с сообщениями об ошибках FF, которая приводит здесь , где мы читаем следующее:
Начиная с Firefox 72, также применяется отказ от прослушивания MIME в документы верхнего уровня, если указан тип контента. Это может привести к загрузке HTML веб-страниц вместо их рендеринга, когда они обслуживаются с типом MIME, отличным от text / html. Убедитесь, что оба заголовка установлены правильно.
Тестеры безопасности сайта обычно ожидают, что этот заголовок будет установлен.
Моя версия FF? Да, 72.
Как на самом деле «установить заголовок»? Не то чтобы это обязательно было решением ... но, по-видимому, это не повредит.
Редактировать после комментария Сроу
Chrome заголовки инструментов разработчика для jquery -3.3. 1.мин. js:
General
Request URL: http://localhost:8000/static/jquery-3.3.1.min.js
Request Method: GET
Status Code: 404 Not Found
Remote Address: 127.0.0.1:8000
Referrer Policy: no-referrer-when-downgrade
Reponse Headers
Content-Type: text/html
Date: Sun, 19 Apr 2020 18:36:11 GMT
Server: WSGIServer/0.2 CPython/3.6.10
Request Headers
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Cookie: csrftoken=Nhj1OavzFCQ3HYRmpWIdSlR595Y6hHGprY2sMUkLL5wzuIIDw1PjTx9fUfpVDnU8
Host: localhost:8000
Pragma: no-cache
Referer: http://localhost:8000/
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36