Django не загружает статические файлы после открытия нового окна с помощью JS
Есть приложение на Django, в котором все статические файлы грузятся всегда правильно кроме одного момента. Это происходит, когда выполняется следующая функция:
function sendForm() {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
window.open('/url/to/open/' + xhr.responseText);
}
};
let info = document.querySelector("#parameters");
let data = new FormData(info);
xhr.open("POST", "/url/to/open/", true);
xhr.setRequestHeader("X-CSRFToken", document.getElementsByName("csrfmiddlewaretoken")[0].value);
xhr.send(data)
}
Код откроет новую вкладку, как и ожидается, загрузит все статические файлы, но если нажать Ctrl + F5, то получится это:
[01/Apr/2020 05:53:42] "GET /static/images/logo.png HTTP/1.1" 404 1669
[01/Apr/2020 05:53:42] "GET /static/js/scripts.js HTTP/1.1" 404 1663
[01/Apr/2020 05:53:42] "GET /static/icons/cat.png HTTP/1.1" 404 1669
[01/Apr/2020 05:53:42] "GET /static/css/style.css HTTP/1.1" 404 1663
[01/Apr/2020 05:53:42] "GET /static/icons/dog.png HTTP/1.1" 404 1675
[01/Apr/2020 05:53:42] "GET /static/icons/butterfly.png HTTP/1.1" 404 1678
[01/Apr/2020 05:53:43] "GET /static/css/style.css HTTP/1.1" 404 1663
[01/Apr/2020 05:53:43] "GET /static/js/scripts.js HTTP/1.1" 404 1663
[01/Apr/2020 05:53:43] "GET /static/favicon.ico HTTP/1.1" 404 1657
Django по какой-то причине перестает видеть мои статические файлы. С этого момента при переходе по любой странице статические файлы никогда не загрузятся. В чем может быть и причина и как это починить?
Шаблон с sendForm().
{% if success %}
<button onclick="sendForm()">Do the thing</button>
{% else %}
....
{% endif %}
View для страницы
def check_instructions(request):
if request.method == 'POST':
.... (обработка в БД)
return render(request, 'template_name.html', {....})
Шаблон страницы, которая открывается sendForm():
{% extends "base.html" %}
{% load static %}
{% block title %}Title{% endblock %}
{% block content_div %}
{% csrf_token %}
<script>
var res = setInterval(getInfo, 2000);
</script>
<div id="data">
...
</div>
{% endblock %}
Тут getInfo() работает хорошо, пока страница не перезагрузится
View страницы:
def get_realtime_info(request, id):
if request.method == 'POST':
.... (some db logic)
return render(request, 'template_name.html', {....})
settings.py
...
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join('static'),)
...