Это странная ошибка. У меня есть HTML-файл, который расширяет базовый шаблон с именем base.html . Я заметил, что тег script
прямо перед конечным тегом body
в базовом шаблоне не отображается в DOM на вкладке Элементы инструментов разработчика Chrome, и этот тег полностью обрезается вместе с остальнымиHTML-файл на вкладке Источники. Это происходит в Chrome, Mozilla и Safari, поэтому это должно быть проблемой на стороне Django. И очевидно, что наблюдаемые эффекты на странице, которые должен создать сценарий, также не происходят.
Вот конец рендеринга HTML на вкладке Sources:
<section>
what is going on
</section>
<footer></footer>
<script src="/static/home/js/ba
Полностью обрезан. Вот конец этого базового шаблона:
{% block main %}{% endblock %}
<footer></footer>
<script src="{% static 'home/js/base.js' %}"></script>
{% block js %}{% endblock %}
</body>
</html>
Теперь вот где это смешно. Проблема в конце файла, поэтому я просто добавил несколько новых строк, чтобы увидеть, есть ли какая-либо разница в визуализации DOM:
{% block main %}{% endblock %}
<footer></footer>
<script src="{% static 'home/js/base.js' %}"></script>
{% block js %}{% endblock %}
</body>
</html>
И на вкладке Источники в теге позже было обрезано:
<section>
what is going on
</section>
<footer></footer>
<script src="/static/home/js/base.j
Я не буду вставлять его сюда, но я добавил около 35 новых строк в конец файла, прежде чем я получил то, что хотел в Источниках. Кажется, что каждая новая строка обрезает визуализированный html на один символ позже.
<section>
what is going on
</section>
<footer></footer>
<script src="/static/home/js/base.js"></script>
</body>
</html>
И эффекты от скрипта наконец-то сработали. Это похоже на временное решение чего-то более глубокого, что необходимо исправить. Кто-нибудь знает, что, черт возьми, происходит и где искать?
Редактировать: Вот шаблон (находится в приложении работа ), который расширяет base.html (находится в приложении home ) с именем work.html :
{% extends 'home/base.html' %}
{% block css %}
<link rel="stylesheet" href="{% static 'work/css/work.css' %}">
{% endblock %}
{% block main %}
<section>
hello
</section>
{% endblock %}
И вот представление, которое его отображает:
from django.shortcuts import render
def work(request):
return render(request, 'work/work.html', {})
Редактировать 2: еще несколько неожиданных результатов:
Когда я удалил скрипт (чтобы я мог вставить его в голову, как это предлагается в комментариях),конец рендеринга html был таким:
<section> what is going on </section>
И вставка прямо перед тегом </head>
привела к:
<section> what is going on </section>
<
Тот же результат, что и выше, когда я закомментировал это в голове.
Комментирование скрипта, когда он до </body>
приводит к следующему:
<section> what is going on </section>
<footer></footer>
<!-- <script src="/static/home/js/base.j
И замена одинарных кавычек на двойные кавычки привела к тому, что в рендеринге html вместо одинарных кавычек отображаются двойные,единственная разница. : /
Затем я удалил почти все так, чтобы мой код был таким:
<!DOCTYPE html>
<html lang="en-US">
<head>
</head>
И это вывело:
<!DOCTYPE html>
<html lang="en-US">
<head>
<scrip
Я добавил несколько тегов:
<!DOCTYPE html>
<html lang="en-US">
<head>
</head>
<body>
</body>
</html>
И результат:
<!DOCTYPE html>
<html lang="en-US">
<head>
<script src="http://127.0.0.1:357
По какой-то причине тег сценария, сгенерированный django-livereload-server, остается. Вот как выглядит полный тег script: <script src="http://127.0.0.1:35729/livereload.js"></script></head>