Как я могу вывести переменную в шаблон django через HttpResponse?

Мне нужно вывести переменную correspondents в шаблон django через HttpResponse, но я не могу придумать, как это правильно сделать. views.py:

def send_chat(request):
    resp = {}
    User = get_user_model()
    if request.method == 'POST':
        post =request.POST
        u_from = UserModel.objects.get(id=post['user_from'])
        u_to = UserModel.objects.get(id=post['user_to'])
        messages = request.user.received.all()
        pk_list = messages.values(u_from.pk).distinct()
        correspondents = User.objects.filter(pk__in=list(pk_list))
        insert = chatMessages(user_from=u_from,user_to=u_to,message=post['message'])
        try:
            insert.save()
            resp['status'] = 'success'
        except Exception as ex:
            resp['status'] = 'failed'
            resp['mesg'] = ex
    else:
        resp['status'] = 'failed'

    return HttpResponse(json.dumps(resp), content_type="application/json")

models.py:

class chatMessages(models.Model):
    user_from = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="sent")
    user_to = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="received")
    message = models.TextField()
    date_created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.message

Объект HttpResponse не принимает никакого входящего контекста. Для обработки переменных в HTML шаблоне вам необходимо визуализировать шаблон с переменными. django использует движок jinja2 для визуализации шаблона в своих встроенных функциях.

Одной из таких функций является TemplateResponse, которая принимает запрос, HTML-шаблон и контекст, представляющий собой словарь имен переменных, которые будут использоваться в шаблоне, и их содержимое:

TemplateResponse(request, 'template.html', {'welcoming': 'Hello World'})

где 'Hello World' также может быть переменной. Шаблон может выглядеть следующим образом:

<div>{{ welcoming }}</div>

, что приведет к чему-то вроде

<div>Hello World</div>

Понимание того, куда помещать шаблоны, может быть сложным. Для того, чтобы понять, что такое шаблоны в django, прочитайте статью документация по шаблонам. Рекомендую также прочитать статью the django template language. Когда я пишу шаблоны, я часто посещаю справочник по встроенным тегам шаблонов и фильтрам.

Вернуться на верх