Есть идеи, почему контексты не отображаются в шаблоне?
Итак, у меня есть эти две функции в файле views.py
class TheirDetailView(DetailView):
model = List
def listcomments(request):
modell = Review.objects.all()
return render(request, 'app/list_comment.html', {'model' : modell})
И эти два пути установлены в urls моих приложений
path('list/<slug:slug>/', TheirDetailView.as_view(),name='list_detail'),
path('comment/',views.listcomments, name='ListComments'),
Итак, у меня есть два шаблона list_detail.html & list_comment.html
Здесь в list_detail.html я включил list_comment.html (только раздел комментариев находится в list_comment.html)
В моем list_detail.html
..
...
....
<div class="commentss" id="comments-id">
<div class = "commentscarrier">
<div class="comment-contentsas comment-head"><p>Comments(3)</p></div>
<hr>
{% include "app/list_comment.html" %}
...
..
В моем list_comment.html
{% load static %}
{% for i in model %}
<div class="comment-contentsas"><p class="commentor-name">{{i.user.username}}
</p></div>
<div class="comment-contentsas"><p>{{i.comment}}</p></div>
</div>
{% endfor %}
В моем models.py
class Review(models.Model):
user = models.ForeignKey(User, models.CASCADE)
List = models.ForeignKey(List, models.CASCADE)
comment = models.TextField(max_length=250)
rate = models.IntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.comment)
class List(models.Model):
title = models.CharField(max_length=65)
genre = models.ManyToManyField('Genre')
creator = models.ForeignKey(User,on_delete=models.SET_NULL,blank=True, null=True)
posted = models.DateTimeField(auto_now_add=True)
content = RichTextField(null=True,default=' ')
type = models.CharField(max_length=10,default="Movie")
slug = models.SlugField(max_length= 300,null=True, blank = True, unique=True)
Я создал 5 объектов модели Review вручную в админке. Поэтому они должны отображаться в моем шаблоне. Но он ничего не показывает. Я предполагаю, что я, должно быть, что-то напутал в своих урлах. Но не могу понять, что именно. Извините, если мой вопрос слишком незрелый. Я новичок.
В вашем TheirDetailView
атрибут model
класса не означает, что в шаблоне будет доступна одноименная контекстная переменная. Вместо этого в контексте будет доступна переменная object
(ее значением будет тот экземпляр List
, который будет извлечен для данного slug
). См. здесь.
Я получил этот ответ с reddit
Пользователь - stratified_n_fold
Итак, вы используете представления на основе классов. Окей, обновите свой код этим фрагментом кода
class TheirDetailView(DetailView):
model = List
def get\_context\_data(self, \*\*kwargs):
context = super().get\_context\_data(\*\*kwargs)
modell = Review.objects.all()
context\["model"\] = modell
return context