Python 如何修复通过下拉框单击类别时无法查看特定类别组的问题?

Python 如何修复通过下拉框单击类别时无法查看特定类别组的问题?,python,django,Python,Django,我正在尝试组织博客类别。我创建了一些“测试帖子”,当我启动服务器时,单击下拉框上的相关类别标签,页面不会显示与该类别相关的页面。除了标题和侧边栏,它不会渲染任何内容 Models.py Views.py url.py 来自django.conf导入设置的 从django.conf.url.static导入静态 从django.contrib导入管理 从django.url导入路径,包括 从导入后视图 从post.views导入索引、blog\u single、about、category、pos

我正在尝试组织博客类别。我创建了一些“测试帖子”,当我启动服务器时,单击下拉框上的相关类别标签,页面不会显示与该类别相关的页面。除了标题和侧边栏,它不会渲染任何内容

Models.py Views.py url.py 来自django.conf导入设置的

从django.conf.url.static导入静态
从django.contrib导入管理
从django.url导入路径,包括
从导入后视图
从post.views导入索引、blog\u single、about、category、post、search、contact
URL模式=[
路径(r'^tinymce/',include('tinymce.url'),
路径('admin/',admin.site.url),
路径(“”,索引),
路径('users/',包括('users.url'),#新建
路径('users/',包括('django.contrib.auth.url')),#新建
路径('blog_single/',blog_single),
路径('about/',about),
路径('category/',category),
路径('search',search,name='search'),
路径('post/',post,name='post-detail'),
路径('contact/',contact),
路径('/',views.blog_single,name=“detail”),
路径(r“^category/(?P.+)/$”,views.show_category,name='category')
]
如果设置为.DEBUG:
urlpatterns+=静态(settings.static\u URL,document\u root=settings.static\u root)
urlpatterns+=静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
category.html
{%extends'base.html%}
{%load static%}
{%block content%}
{%if子_类别%}
子类别
{i在子_类别中的百分比%}
{%endfor%}
{%endif%}
{%if post_set%}
{post_set%中的i的%s}
{%endfor%}
{%endif%}
{%include'sidebar.html',category_count=category_count most_recent=most_recent%} {%endblock%}
from django.db import models
from django.urls import reverse
from tinymce import HTMLField
from django.utils import timezone

class Comment(models.Model):
    post = models.ForeignKey('Post', on_delete=models.CASCADE, related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def __str__(self):
        return self.text

class CategoryTag(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField(unique=True)
    parent = models.ForeignKey(
        'self',
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        related_name='children'
    )

    class Meta:
        unique_together = ('slug', 'parent',)
        verbose_name_plural = 'categories'

    def __str__(self): 
        full_path = [self.title]

        k = self.parent

        while k is not None:
            full_path.append(k.title)
            k = k.parent

        return ' -> '.join(full_path[::-1])

class Post(models.Model):
    title = models.CharField(max_length=100)
    overview = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    content = HTMLField('Content')
    comment_count = models.IntegerField(default=0)
    post_img = models.ImageField()
    categories = models.ForeignKey('CategoryTag', null=True, blank=True, on_delete=models.CASCADE)
    featured = models.BooleanField()
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.title

    def get_cat_list(self):           
        k = self.categories
        breadcrumb = ["dummy"]
        while k is not None:
            breadcrumb.append(k.slug)
            k = k.parent

        for i in range(len(breadcrumb)-1):
            breadcrumb[i] = '/'.join(breadcrumb[-1:i-1:-1])
        return breadcrumb[-1:0:-1]

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



from django.db.models import Count, Q
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from .models import Post
from marketing.models import Signup

def search(request):
    queryset = Post.objects.all()
    query = request.GET.get('q')
    if query:
        queryset = queryset.filter(
            Q(title__icontains=query) |
            Q(overview__icontains=query)
        ).distinct()
    context = {
        'queryset': queryset
    }
    return render(request, 'search_results.html', context)

def get_category_count():
    queryset = Post  \
        .objects  \
        .values('categories__title')  \
        .annotate(Count('categories__title'))  
    return queryset


def index(request):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    featured = Post.objects.filter(featured=True)
    latest = Post.objects.order_by('-timestamp')[0:3]
    post_list = Post.objects.all()
    paginator = Paginator(post_list, 6)
    page_request_var = 'page'
    page = request.GET.get(page_request_var)
    try: 
        paginated_queryset = paginator.page(page)
    except PageNotAnInteger:
        paginated_queryset = paginator.page(1)
    except EmptyPage:
        paginated_queryset = paginator.page(paginator.num_pages)

    if request.method == "POST":
        email = request.POST["email"]
        new_signup = Signup()
        new_signup.email = email
        new_signup.save()

    context = {
        'object_list': featured,
        'queryset': paginated_queryset,
        'most_recent': most_recent,
        'latest': latest,
        'page_request_var': page_request_var,
        'category_count': category_count
    }
    return render(request, 'index.html', context)

def blog_single(request):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    post = get_object_or_404(Post, id=id)
    latest = Post.objects.order_by('-timestamp')[:3]
    context = {
        'post': post,
        'most_recent': most_recent,
        'latest': latest,
        'category_count': category_count
    }
    return render(request, 'blog-single.html', {})

def about(request):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    latest = Post.objects.order_by('-timestamp')[:3]
    context = {
        'post': post,
        'most_recent': most_recent,
        'latest': latest,
        'category_count': category_count
    }
    return render(request, 'about.html', context)

def category(request):
    return render(request, 'category.html', {})

def contact(request):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    latest = Post.objects.order_by('-timestamp')[:3]
    context = {
        'most_recent': most_recent,
        'latest': latest,
        'category_count': category_count
    }
    return render(request, 'contact.html', context)

def post(request, id):
    category_count = get_category_count()
    most_recent = Post.objects.order_by('-timestamp')[:3]
    post = get_object_or_404(Post, id=id)
    latest = Post.objects.order_by('-timestamp')[:3]
    context = {
        'post': post,
        'most_recent': most_recent,
        'latest': latest,
        'category_count': category_count
    }
    return render(request, 'blog-single.html', context)

def show_category(request,hierarchy= None):
    category_slug = hierarchy.split('/')
    category_queryset = list(CategoryTag.objects.all())
    all_slugs = [ x.slug for x in category_queryset ]
    parent = None
    for slug in category_slug:
        if slug in all_slugs:
            parent = get_object_or_404(CategoryTag,slug=slug,parent=parent)
        else:
            instance = get_object_or_404(Post, slug=slug)
            breadcrumbs_link = instance.get_cat_list()
            category_name = [' '.join(i.split('/')[-1].split('-')) for i in breadcrumbs_link]
            breadcrumbs = zip(breadcrumbs_link, category_name)
            return render(request, "blog-single.html", {'instance':instance,'breadcrumbs':breadcrumbs})

    return render(request,"category.html",{'post_set':parent.post_set.all(),'sub_categories':parent.children.all()}) 
from django.conf import settings 
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
from post import views


from post.views import index, blog_single, about, category, post, search, contact

urlpatterns = [
    path(r'^tinymce/', include('tinymce.urls')),
    path('admin/', admin.site.urls),
    path('', index),
    path('users/', include('users.urls')), # new
    path('users/', include('django.contrib.auth.urls')), # new
    path('blog_single/', blog_single),
    path('about/', about),
    path('category/', category),
    path('search', search, name='search'),
    path('post/<id>/', post, name='post-detail'),
    path('contact/', contact),
    path('<slug:slug>/', views.blog_single, name="detail"),
    path(r'^category/(?P<hierarchy>.+)/$', views.show_category, name='category') 
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
{% extends 'base.html' %}
{% load static %}

{% block content %}
<section class="site-section">
      <div class="container">
        <div class="row mb-4">
          <div class="col-md-6">
            {% if sub_categories %}
              <h2 class="mb-4">Sub Categories</h2>
              {% for i in sub_categories %}
                <a href="{{ i.slug }}"> {{ i.name }} </a>
              {% endfor %}
            {% endif %}
          </div>
        </div>
        <div class="row blog-entries">
          <div class="col-md-12 col-lg-8 main-content">
            <div class="row mb-5 mt-5">
              <div class="col-md-12">
              {% if post_set %}
              {% for i in post_set %}
                <div class="post-entry-horzontal">
                  <a href="{{ i.slug }}">
                    <div class="image element-animate" data-animate-effect="fadeIn" style="background-image: url(images/img_10.jpg);">
                    </div>
                    <span class="text">
                      <div class="post-meta">
                        <span class="category">{{ i.slug }}</span>
                        <span class="mr-2">{{ obj.timestamp|timesince }} ago </span> &bullet;
                        <span class="ml-2"><span class="fa fa-comments"></span> {{ post.comment_count }}</span>
                      </div>
                      <h2>{{ i.title | truncatechars:30}}</h2>
                    </span>
                  </a>
                </div>     
              {% endfor %}  
              {% endif %}
                              <!-- END post -->
                              <!-- END post -->
              </div>
            </div>
              <!-- Pagination -->
            <div class="row">
              <div class="col-md-12 text-center">
                <nav aria-label="Page navigation" class="text-center">
                  <ul class="pagination">
                    <li class="page-item  active"><a class="page-link" href="#">Prev</a></li>
                    <li class="page-item"><a class="page-link" href="#">1</a></li>
                    <li class="page-item"><a class="page-link" href="#">2</a></li>
                    <li class="page-item"><a class="page-link" href="#">3</a></li>
                    <li class="page-item"><a class="page-link" href="#">Next</a></li>
                  </ul>
                </nav>
              </div>
            </div>
          </div>

          <!-- END main-content -->

          {% include 'sidebar.html' with category_count=category_count most_recent=most_recent %}

          <!-- END sidebar -->
        </div>
      </div>
    </section>
{% endblock %}