Python Django:如何在页面上显示特定类别的帖子

Python Django:如何在页面上显示特定类别的帖子,python,django,frameworks,Python,Django,Frameworks,我正在Django建立一个博客,注册用户可以在这里写博客文章。我想在一个页面上显示与特定类别关联的帖子。我试图这样做,但它没有显示与文章相关的帖子。这是我的档案 型号.py from django.db import models from django.contrib.auth.models import User from django.urls import reverse from datetime import datetime, date class Category(m

我正在Django建立一个博客,注册用户可以在这里写博客文章。我想在一个页面上显示与特定类别关联的帖子。我试图这样做,但它没有显示与文章相关的帖子。这是我的档案

型号.py

    from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from datetime import datetime, date


class Category(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        # return reverse('article', args=(str(self.id)))
        return reverse('home') # go to home page after article submission


class Post(models.Model):
    title = models.CharField(max_length=255)
    tags = models.CharField(max_length=255, default="Ryan's World")
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = models.TextField()
    post_date = models.DateField(auto_now_add=True)
    category = models.CharField(max_length=255, default="uncategorized")

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

    def get_absolute_url(self):
        # return reverse('article', args=(str(self.id)))
        return reverse('home') # go to home page after article submission
from django.urls import path
# from . import views
from .views import HomeView, ArticleDetailView, AddPostView, UpdatePostView, DeletePostView, AddCategoryView, CategoryView

urlpatterns = [
    # path('', views.home , name='home'),
    path('', HomeView.as_view(), name="home"),
    path('article/<int:pk>', ArticleDetailView.as_view(), name="article"),
    path('add_post/', AddPostView.as_view(), name='add_post'),
    path('add_category/', AddCategoryView.as_view(), name='add_category'),
    path('article/edit/<int:pk>', UpdatePostView.as_view(), name="updatearticle"),
    path('article/<int:pk>/remove', DeletePostView.as_view(), name="deletearticle"),
    path('category/<str:cats>/', CategoryView, name='category')
from django import forms
from .models import Post, Category


choices = Category.objects.all().values_list('name','name')

choice_list = []
for item in choices:
    choice_list.append(item)

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('title', 'tags', 'author','category' ,'body')

        widgets = {
            'title': forms.TextInput(attrs={'class':'form-control', 'placeholder': 'this is placeholder'}),
            'tags': forms.TextInput(attrs={'class':'form-control'}),
            'author': forms.Select(attrs={'class':'form-control'}),
            'category': forms.Select( choices = choice_list, attrs={'class':'form-control'}),
            'body': forms.Textarea(attrs={'class':'form-control'}),


        }
视图.py 创建基于函数的视图

 from django.shortcuts import render
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from .models import Post, Category
from .forms import PostForm, EditForm
from django.urls import reverse_lazy


class HomeView(ListView):
    model = Post
    template_name = 'home.html'
    ordering = ['-id']

def CategoryView(request, cats):
    category_posts = Post.objects.filter(category=cats)
    return render(request, 'categories.html', {'cats':cats ,'category_posts': category_posts })

    . . . 
url.py

    from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from datetime import datetime, date


class Category(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        # return reverse('article', args=(str(self.id)))
        return reverse('home') # go to home page after article submission


class Post(models.Model):
    title = models.CharField(max_length=255)
    tags = models.CharField(max_length=255, default="Ryan's World")
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = models.TextField()
    post_date = models.DateField(auto_now_add=True)
    category = models.CharField(max_length=255, default="uncategorized")

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

    def get_absolute_url(self):
        # return reverse('article', args=(str(self.id)))
        return reverse('home') # go to home page after article submission
from django.urls import path
# from . import views
from .views import HomeView, ArticleDetailView, AddPostView, UpdatePostView, DeletePostView, AddCategoryView, CategoryView

urlpatterns = [
    # path('', views.home , name='home'),
    path('', HomeView.as_view(), name="home"),
    path('article/<int:pk>', ArticleDetailView.as_view(), name="article"),
    path('add_post/', AddPostView.as_view(), name='add_post'),
    path('add_category/', AddCategoryView.as_view(), name='add_category'),
    path('article/edit/<int:pk>', UpdatePostView.as_view(), name="updatearticle"),
    path('article/<int:pk>/remove', DeletePostView.as_view(), name="deletearticle"),
    path('category/<str:cats>/', CategoryView, name='category')
from django import forms
from .models import Post, Category


choices = Category.objects.all().values_list('name','name')

choice_list = []
for item in choices:
    choice_list.append(item)

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('title', 'tags', 'author','category' ,'body')

        widgets = {
            'title': forms.TextInput(attrs={'class':'form-control', 'placeholder': 'this is placeholder'}),
            'tags': forms.TextInput(attrs={'class':'form-control'}),
            'author': forms.Select(attrs={'class':'form-control'}),
            'category': forms.Select( choices = choice_list, attrs={'class':'form-control'}),
            'body': forms.Textarea(attrs={'class':'form-control'}),


        }

我忘了更正这里的导入缩进。。。但是缩进在我的项目文件中是正确的