Шаблон Django не отображает данные из базы данных

Я столкнулся с проблемой, когда информация из моей базы данных отображается на одном шаблоне, но я хочу, чтобы определенные части отображались на другой странице для блога.

Когда я кликаю на physics-blog, он отображает мои изображения и заголовок поста. Для этого я обратился к базе данных. Работает отлично и прекрасно.

Но когда я нажимаю на один из них и хочу показать {{ physicsBlog.body }}, он ничего не показывает. Я никак не могу понять, почему это работает в другом шаблоне ListView, но не в шаблоне DetailView.

Вот мой код.

models.py

class physicsBlog(models.Model):title = models.CharField(max_length=250)blog_image = models.ImageField(null=True, blank=True)description = models.CharField(max_length=200)author = models.ForeignKey(User, on_delete=models.CASCADE)body = RichTextField(blank=True, null=True)date_created = models.DateField(auto_now_add=True)def __str__(self):return self.title + ' | ' + str(self.author)

views.py

class physicsBlogListView(ListView):model = physicsBlogtemplate_name = 'physics.html'ordering = ['-id']class physicsBlogDetailView(DetailView):model = physicsBlogtemplate_name = 'physics-blog-details.html'

urls.py

urlpatterns = [path('', views.home, name="home"),path('physics-blog', physicsBlogListView.as_view(), name="physics-blog"),path('physics-blog/<int:pk>', physicsBlogDetailView.as_view(), name="physics-blog-details"),path('crypto-blog', cryptoBlogListView.as_view(), name="crypto-blog"),path('crypto-blog/<int:pk>', cryptoBlogDetailView.as_view(), name="crypto-blog-details"),]

Я не очень хорошо знаком с использованием этих общих дисплеев, которые предоставляет Django, но из django docs там говорится

Во время выполнения этого представления, self.object будет содержать объект, который над которым работает представление.

Может быть, попробовать {{ object.body }} в вашем шаблоне?

Вы можете использовать стандартный способ отображения данных в стандартном однообъектном представлении (в основном DetailView):

{{ object.body }}

Но если вы хотите увидеть это лучше, просто добавьте переменную context_object_name:

class physicsBlogDetailView(DetailView):
    context_object_name = "physics_blog"
    ...

После такого изменения в шаблоне:

{{ physics_blog.body }}

Без context_object_name это object или object_list. Я немного удивлен, что у вас все получилось в ListView и возникли проблемы в DetailView, потому что это одно и то же.

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