Шаблон 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, потому что это одно и то же.