Django — Не могу вывести записи из модели
У меня есть модель, значения из которой я хочу вывести на странице. Данные в таблице есть, но на странице их почему-то нет.
models.py:
from django.db import models
class Reviews(models.Model):
name = models.CharField(max_length=255, unique=True, verbose_name='Имя')
email = models.EmailField(max_length=255, unique=True, verbose_name='Email')
text = models.TextField(verbose_name='Отзыв')
class Meta:
db_table = 'review'
verbose_name = 'Отзыв'
verbose_name_plural = 'Отзывы'
def __str__(self):
return self.name
views.py:
from django.shortcuts import render, redirect
from goods.models import Products, Reviews
def ShowReview(request):
reviews = Reviews.objects.all()
context = {
'reviews': reviews
}
return render(request, context)
HTML:
{% for x in reviews %}
<div class="review-card">
<p class="review-name">{{ x.name }}</p>
<p class="review-text">{{ x.text }}</p>
</div>
{% endfor %}
Данные в таблице:
upd: создал template для рендера, из основного HTML-файла вставил в него только это:
{% for x in reviews %}
<div class="review-card">
<p class="review-name">{{ x.name }}</p>
<p class="review-text">{{ x.text }}</p>
</div>
{% endfor %}
Изменил одну строчку во views:
return render(request, 'goods/review_template.html', context)
Подключил template в основной HTML-файл через include, но ничего не поменялось
upd2: Попробовал добавить div с текстом в template, и текст отобразился, а цикл с данными из модели - нет. Можно сделать вывод, что проблема не в неправильном подключении template.
Нашёл решение своей проблемы:
Во views.py
вместо использования отдельной функции ShowReview()
, переместил все переменные в основную функцию, которая рендерит страницу product
, к которой я подключал шаблон. Цикл for
из шаблона перенёс в product.html
.
Скорее всего, мне стоило сразу отправить весь код из views.py
, а не только одну функцию из него, тогда бы решение, скорее всего, нашлось бы быстрее.