#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] Ошибка недосмотра, сэр, Спасибо за помощь