Django сигналы. Пожалуйста, помогите, как обновить html страницу пользователя при получении сигнала
Добрый день! Я только начал изучать фреймворк Django. У меня есть вопрос. Я никак не могу подключить к серверу отдельное приложение commands, которое запускается через команду python manage.py, которую я сделал. Идея в том, чтобы динамически обновлять страницу. Данные от бота попадают в sqllite и оттуда, когда вы переходите на новую страницу, они анализируются и отображаются. На данный момент данные работают нормально, но я хочу обновлять страницу, на которой находится пользователь или добавлять сообщение при добавлении записи в базу. Пробовал делать через сигналы, но так как есть 2 разных скрипта сервер и бот, то обновление б.д. отображается только в коде или бота, или при перезагрузке страницы.
@receiver(post_save, sender=Message)
def update(created, **kwargs):
msg = Message.objects.order_by("data")
obj = msg.latest('data')
print(obj.user_id)
Я поместил этот код в представление. Сигнальный код.
def messenger_full(request, parameter):
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
form.save()
return redirect(f'/messenger/{us_id}')
else:
pass
form = MessageForm()
us_id = parameter
msg = Message.objects.order_by("data").filter(user_id=us_id)
obj = msg.latest('data')
obj.is_read = True
obj.save()
username = msg[0].user_info
img_id = msg[(len(msg) - 1)].img
return render(request, 'page2/messenger.html',
{'msg': msg, 'username': username, 'img_id': img_id, 'us_id': us_id,
'form': form})
Мой код может быть не особенно коротким и правильным, так как я глуп и все еще изучаю Django. Это идет на мой URL с представлениями, где я затем делаю цикл и помещаю данные из объекта в html-теги
class Command(BaseCommand):
help = 'TG Bot'
def handle(self, *args, **options):
bot = telebot.TeleBot(settings.BOT_KEY)
@bot.message_handler(content_types=['text'])
def react_on_msg(message):
Message.objects.create(
user_id=int(user_id),
data=date,
text=text,
text_lit=text[0:10],
user_info=user_name,
is_answer=is_answer,
img=img,
is_read=is_read,
is_lth_pnch=is_lth_pnc)
Все представления работают отлично, никаких ошибок и т.д. . Но первый код, при сохранении в sqlite идет со стороны бота выводит в консоль бота. При сохранении на стороне сервера выводит в консоль сервера. Но мне нужно, чтобы он выводил непосредственно на сервер и рендерил или перенаправлял.
Подскажите, пожалуйста, можно ли обойтись без websockets, так как я их совсем не понимаю. Может можно привязать сигналы напрямую к серверу? Или как обновлять страницу по событию?
Я очень долго думал над этим вопросом. Не обессудьте, это мой первый проект Django и мой первый пост здесь.