Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何从页面上的类别中筛选和显示帖子_Python_Django - Fatal编程技术网

Python Django:如何从页面上的类别中筛选和显示帖子

Python Django:如何从页面上的类别中筛选和显示帖子,python,django,Python,Django,我是Django新手,已经构建了一个包含帖子的简单应用程序。我想在一个页面上显示与特定类别关联的帖子。我在网上做了不少研究,但似乎没能奏效。我认为问题出在我的观点上 我猜CategoryListView中的get_queryset函数有问题 ''' models.py ''' from django.db import models class Post(models.Model): title = models.CharField(max_length=100) cont

我是Django新手,已经构建了一个包含帖子的简单应用程序。我想在一个页面上显示与特定类别关联的帖子。我在网上做了不少研究,但似乎没能奏效。我认为问题出在我的观点上

我猜CategoryListView中的get_queryset函数有问题

'''
models.py 
'''
from django.db import models


class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    category = models.ForeignKey(
        'Category', 
        on_delete=models.SET_NULL,
        null=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})



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

    def __str__(self):
        return self.name 

    def get_absolute_url(self):
        return reverse('post-category', kwargs={'pk': self.pk})




'''
views.py
'''
from django.views.generic import ListView    
from .models import Post, Category



class CategoryListView(ListView):
    model = Post
    template_name = 'posts/post_category.html'

    def get_queryset(self):
        category = get_object_or_404(Category,   id=self.kwargs.get('category__name'))
        return Posts.objects.filter(category_name=category)




'''
urls.py
'''
from .views import CategoryListView


urlpatterns = [
    # urlpatterns for other pages left out for better readability
    CategoryListView.as_view(), name='post-category')
]
代码给我一个404,并显示没有类别与我的查询匹配的消息。

该函数应返回如下内容:

class CategoryListView(ListView):

    # ...

    def get_queryset(self):
        return Post.objects.filter(category_id=self.kwargs.get('pk'))
也就是说,如果要显示有关类别的信息,最好将其设置为a,然后反向查询关系,如:

class CategoryDetailView(DetailView):
    model = Category
    context_object_name = 'category'
    template_name = 'posts/post_category.html'
class CategoryDetailView(详细视图):
型号=类别
上下文\对象\名称='category'
模板名称='posts/post\u category.html'
在模板中,可以使用以下工具渲染数据:

Category name: {{ category.name }}
{% for post in category.post_set.all %}
    post: {{ post.title }}
{% endfor %}
类别名称:{{Category.name}
{category.post_set.all%}
帖子:{{post.title}
{%endfor%}
该函数应返回如下内容:

class CategoryListView(ListView):

    # ...

    def get_queryset(self):
        return Post.objects.filter(category_id=self.kwargs.get('pk'))
也就是说,如果要显示有关类别的信息,最好将其设置为a,然后反向查询关系,如:

class CategoryDetailView(DetailView):
    model = Category
    context_object_name = 'category'
    template_name = 'posts/post_category.html'
class CategoryDetailView(详细视图):
型号=类别
上下文\对象\名称='category'
模板名称='posts/post\u category.html'
在模板中,可以使用以下工具渲染数据:

Category name: {{ category.name }}
{% for post in category.post_set.all %}
    post: {{ post.title }}
{% endfor %}
类别名称:{{Category.name}
{category.post_set.all%}
帖子:{{post.title}

{%endfor%}
这是可行的,但是我如何颠倒顺序,总是先显示最新的帖子呢

Category name: {{ category.name }}
{% for post in category.post_set.all %}
    post: {{ post.title }}
{% endfor %}

这是可行的,但是我如何颠倒顺序,总是先显示最新的帖子呢

Category name: {{ category.name }}
{% for post in category.post_set.all %}
    post: {{ post.title }}
{% endfor %}

urlpatterns
似乎不完整?categorie->categoryThe
urlpatterns
似乎不完整?categorie->categoryThanks等待您的回答!这是否意味着在尝试导航到该站点时,我必须转到[first_part_of_url]/category/category_id而不是[first_part of_url]/category/category_name?@codecodecode:your
return reverse('post-category',kwargs={pk self.pk})
建议您导航到
rooturl/category/123
,因此,对于
123
类别的
pk
。我明白了,再次感谢你的帮助——它解决了问题:)谢谢你的回答!这是否意味着在尝试导航到该站点时,我必须转到[first_part_of_url]/category/category_id而不是[first_part of_url]/category/category_name?@codecodecode:your
return reverse('post-category',kwargs={pk self.pk})
建议您导航到
rooturl/category/123
,因此,对于
123
类别的
pk
。你可以用slug来代替。我明白了,再次感谢你的帮助–它解决了问题:)对不起,我自己解决了,在模型类Meta:ordering=['-id']很好。这似乎是一个新问题?对不起,我自己解决了,在模型类Meta:ordering=['-id']很好。这似乎是一个新问题?