все. Я довольно новый с Джанго.
В моем шаблоне django есть специальная позиция для отображения фотографии, и фотография должна обновляться каждую секунду. Как я могу это сделать? (Пути для новых фотографий взяты из базы данных. Я знаю, как получить их из БД.)
Я знаю только, как вернуть HTML с помощью URL-запроса, но как я могу обновить определенный элемент в этом HTML без нового URL-запроса?
Дополнительная информация: фотографии, которые должны быть показаны, генерируются в режиме реального времени другим процессом, как и пути для фотографий.
На самом деле, я пока не реализую это. Я все еще изучаю джанго, но я могу смоделировать ситуацию с помощью простых кодов следующим образом:
urls.py:
urlpatterns = [ url(r'^hello/$', hello_world),]
views.py:
from django.shortcuts import render
from datetime import datetime
def hello_world(request):
return render(request, 'hello_world.html', {
'current_time': str(datetime.now()),
})
hello_world.html:
<!-- hello_world.html -->
<!DOCTYPE html>
<html>
<head>
<title>I come from template!!</title>
<style>
body {
background-color: lightyellow;
}
em {
color: LightSeaGreen;
}
</style>
</head>
<body>
<script>
setInterval(function() {
fetch("{% url 'hello_ajax' %}").then(function (response) {
var current_time = response.json().current_time;
console.log(current_time);
document.getElementById("test").innerHTML = current_time;
});
}, 1000);
</script>
<h1>Hello World!</h1>
<em id="test"></em>
</body>
</html>
Мы можем обновить current_time, обновив страницу, но как насчет обновления current_time каждую секунду без обновления страницы? Мы можем увидеть фотографию как current_time, чтобы смоделировать мой случай.
Обновление:
Наконец-то работает:
<script>
setInterval(function() {
fetch("{% url 'hello_ajax' %}").then(response => response.json())
.then(data => {
// you can access your data here
document.getElementById("test").innerHTML = data.current_time;
});
}, 1000);
</script>
Мне интересно, почему он не работает с:
<script>
setInterval(function() {
fetch("{% url 'hello_ajax' %}").then(response =>{
// you can access your data here
document.getElementById("test").innerHTML = response.json().current_time;
});
}, 1000);
</script>
он говорит, что "(index): 22 Uncaught (в обещании) TypeError: Не удалось выполнить 'json' для 'Response': поток тела заблокирован в fetch.then.data"
Есть идеи?