Как получить сообщение по каждой категории в блоге и разместить их на HTML-странице postlist в django

#python #html #django

#python #HTML #django

Вопрос:

Я создаю блог и новостной веб-сайт в django, на странице которого отображается определенная категория. Это конкретная категория для новостей, политики и образования, которые отображаются на моем post_list.html . Я не получаю исключения, когда пытаюсь получить его с помощью

Post.objects.filter(категория__name__in=[«новости»])

Это модель для моей категории

 class Category(models.Model): 
         name = models.CharField(max_length=250)
         slug = models.SlugField(max_length=250, unique=True)
  

Это модель для моего сообщения

 class Post(models.Model):
    image = models.ImageField(upload_to="images/")
    title = models.CharField(max_length=150)
    summary = models.CharField(max_length=250)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
  

* Это представление для моего списка сообщений

 class PostListView(ListView):
       model = Post 
       template_name = blog/post_list.html
       context_object_name = "posts"
       ordering = ["date_posted"
       paginate_by = 5


def get_queryset(self):
    posts = 
    get_object_or_404(Post)
    return  Post.objects.filter().order_by( "-date_posted")


def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['posts'] = Post.objects.filter()[0:4] 
    context['new_cat'] =Post.objects.filter(category__name__in=[" news"])[0.5] 
    context['new_politics'] = Post.objects.filter(category__name__in=["politics"])[0.5]
 
    return context ***
  

Это мой pos_tlist.html код для получения сообщения по категориям в новостях

   <div> <h1>News</h1> <div/>  
{% for post in new_cat%} 
  div class="mt-2" 
 <a href="{{ post.get_absolute_url }}"><img class="object-cover w-full rounded-lg" src="{{ post.image.url }}" alt="{{ post.title }} cover"> </a></div>
<div class="py-2 flex flex-row items-center justify-between">
        <a href="{{ post.get_absolute_url }}"><h1 class="hover:text-blue-600 text-gray-900 font-bold text-xl mb-2 py-2">{{ post.title }}</h1></a></div> '''
  

Я не получаю исключения для этого сообщения, когда запускаю python manage.py сервер запуска
Но когда я захожу в свою оболочку, python manage.py оболочка
Я получаю полный список всех сообщений.
Но он отказывается отображаться на hompage
Мне нужна помощь в этом и в том, чтобы все мои категории отображались в каждой категории на странице новостей
Есть ли какое-либо решение для отображения всех моих сообщений по категориям на post_list.html и домашняя страница

В заключение — я не могу фильтровать сообщения, которые имеют модели внешнего ключа, такие как Category, Author в моей модели Post. Я могу напрямую фильтровать сообщение из модели post, но я не могу фильтровать заголовок сообщения из моделей имен категорий

Это означает, что когда я пытаюсь отфильтровать Post.objects.all(), тогда выйдет все мое сообщение, но когда я пытаюсь Post.objects.filter(category__name__in= [«news»]), на моей странице ничего не будет отображаться, кроме ошибки исключения

Справка

Комментарии:

1. Итак, Post.objects.filter(category__name__in=["news"]) не возвращает сообщений, значит, у вас нет сообщений с таким названием категории?

2. У меня много сообщений, связанных с категорией новостей в моей базе данных, но она по-прежнему не возвращает исключения для post, но возвращает список сообщений в списке, но не в списке сообщений, но вы видели что-то не так с моим кодом

3. Пожалуйста, очистите код в вашем вопросе, чтобы он был точно таким, как у вас, я вижу некоторые странные вещи, такие как return context *** , ordering = ["date_posted" без закрывающей скобки, posts = get_object_or_404(Post) , [0.5] как индекс массива

Ответ №1:

Может ли проблема быть в пробелах, которые у вас есть в «новостях» здесь?

 Post.objects.filter(category__name__in=[" news"])[0.5]
  

Кроме того, что такое [0.5] ? Я думаю, вы хотите [0:5] туда?

Кроме того, убедитесь, что ваши get_queryset get_context_data методы и имеют правильный отступ. Потому что, если у них нет отступа, как вы показали, тогда они определены вне вашего PostListView класса…

Комментарии:

1. Этот ответ здесь действительно решил мою проблему, большое спасибо, чувак, это действительно была ошибка пробела или ошибка недосмотра, которую я по ошибке сделал [0.5] вместо [0: 5] Ошибка недосмотра, сэр, Спасибо за помощь