Мой django generic DetailView не показывает никаких данных

Всем привет, я только начал разрабатывать свой блог на django, но у меня не получается отображать посты по отдельности. DetailView не работает, помогите пожалуйста!

Вот мое мнение.

from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Article

# Create your views here.
class Home(ListView):
    model = Article
    template_name = 'home.html'

class ArticleDetailView(DetailView):
    model = Article
    template_name = 'article_detail_view.html'

Моя модель

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Article(models.Model):
    title = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = models.TextField()

    def __str__(self):
        return self.title + '|' + str(self.author)

    class Meta:
        verbose_name = 'Article'
        verbose_name_plural = 'Articles'

Спасибо за обновление вопроса.

Сначала добавьте метод get_absolute_url в модель следующим образом:

class Article(models.Model):
    title = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = models.TextField()

    def __str__(self):
        return self.title + '|' + str(self.author)

    class Meta:
        verbose_name = 'Article'
        verbose_name_plural = 'Articles'
        
    def get_absolute_url(self):
        return reverse("article_details", kwargs={"pk": self.pk})

В вашем article_detail_view.html вы можете получить доступ к статье, используя экземпляр статьи:

<h2>Article Detail View</h2>

<h2>{{article.title}} By {{ article.author }}</h2></br>
<p>{{article.body}}</p>

в models.py

class Meta:
    managed = True
    verbose_name = 'Article'
    verbose_name_plural = 'Articles'

в вашем article_detail_view.html вы можете получить доступ к статье по: {{object.title}} вы также можете указать, что возвращать в шаблоне и как вы хотите назвать это, переопределив get_context_data проверить this

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