NoReverseMatch at/url和slug有问题

2024-04-20 03:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到NoReverseMatch at /

Reverse for 'category' with arguments '(u'',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['category/(?P[\w\-]+)/$']

我不知道哪里出了问题。我知道是什么原因,但我不知道为什么。此url导致错误:

url(r'^category/(?P<category_name_slug>[\w\-]+)/$', views.category, name='category'),

错误来自于此索引.html你知道吗

{% for category in categories %}
    <li class="list-group-item"><a href="{% url 'category' category.slug %}">{{ category.name }}</a></li>
{% endfor %}

我很确定我的车没问题视图.py但以防万一我会把它贴在这里

    #for front page

def index(request):
        """This view return index page. In index page, there is thread list.
        And thread list can be sorted by score, number of comment, date, title using paging.
        GET parameters are 'sort' and 'page'. 'sort' is sorting methods. 'page' is number of page.
        :param request: Django request object
        :return: Thread list page
        """

        categories = Category.objects.all()

        try:
                sort = request.GET["sort"].strip()
                sort_method = SortMethods[sort]
                page = request.GET["page"].strip()
        except KeyError:
                sort_method = SortMethods.score
                page = 1

        if sort_method == SortMethods.date:
                thread_list = Post.objects.order_by("-pub_date")
        else:
                thread_list = Post.objects.all()
                thread_list = sorted(thread_list, key=lambda x: x.get_score(), reverse=True)

        paginator = Paginator(thread_list, 30)

        try:
                posts = paginator.page(page)
        except PageNotAnInteger:
                posts = paginator.page(1)
        except EmptyPage:
                posts = paginator.page(paginator.num_pages)

        context = {
                "posts": posts,
                "pages": paginator.page_range,
                "sort": sort_method.name,
                "categories":categories
        }
        return render(request, "main/index.html", context)

#for single-post page
def post(request, slug):
        single_post = get_object_or_404(Post, slug=slug)
        single_post.views += 1  # increment the number of views
        single_post.save()      # and save it
        context_dict = {
            'single_post' :single_post,
        }

        return render(request, 'main/post.html', context_dict)
#for category page
def category(request, category_name_slug):
    try:

                category = Category.objects.get(slug=category_name_slug)
                sort = request.GET["sort"].strip()
                sort_method = SortMethods[sort]
                page = request.GET["page"].strip()
    except KeyError:
                sort_method = SortMethods.score
                page = 1

    if sort_method == SortMethods.date:
                thread_list = Post.objects.filter(category=category).order_by("-pub_date")
    else:
                thread_list = Post.objects.filter(category=category)
                thread_list = sorted(thread_list, key=lambda x: x.get_score(), reverse=True)

    paginator = Paginator(thread_list, 30)

    try:
                posts = paginator.page(page)
    except PageNotAnInteger:
                posts = paginator.page(1)
    except EmptyPage:
                posts = paginator.page(paginator.num_pages)

    context = {
                "posts": posts,
                "pages": paginator.page_range,
                "sort": sort_method.name,
                "categories":category,
              "cat_name_slug":category_name_slug,
        }
    return render(request, "main/index.html", context)

Tags: nameobjectsrequestpagesortpostthreadmethod
1条回答
网友
1楼 · 发布于 2024-04-20 03:35:49

首先要注意的是,您有一个空的slug

Reverse for 'category' with arguments '(u'',)' and keyword arguments '{}' not found

一个问题是如何定义categories-^{}是一个方法,称之为

categories = Category.objects.all()
                             HERE^

此外,您应该检查您的类别是否生成了非空的slug。你知道吗

相关问题 更多 >