Django 1.6没有类别匹配给定的查询

时间:2013-12-11 12:07:31

标签: python django

我是django的新手..我不明白这个404错误是什么原因

当我尝试去链接时,我找不到页面(404) 没有类别与给定的查询匹配。

代码:

models.py:

   ....
    def get_absolute_url(self):
        return ('article_url', None, { 'slug': self.slug })

   ....
      def get_absolute_url(self):
        return ('category_url', None, { 'slug': self.slug })

views.py:

def main(request):
    return render_to_response('main.html',
    {'categories': Category.objects.all(),
    'articles': Article.objects.all()[:4]})

def article_view(request, slug):
    return render_to_response('article_view.html',
    {'article': get_object_or_404(Article, slug=slug)})


def category_view(request, slug):
    category = get_object_or_404(Category, slug=slug)
    return render_to_response ('category_view.html',
    {'category': category, 'articles': Article.objects.filter(category=category)
    [:4]})

urls.py

urlpatterns = patterns('',
url(r'^$', 'main.views.main'),
url(r'^(?P<slug>[^\.]+)/$', 'main.views.category_view', name='category_url'),
url(r'^(?P<slug>[^\.]+)/$', 'main.views.article_view', name='article_url'),
)

2 个答案:

答案 0 :(得分:2)

最有可能的是,您没有在网址中指定的slug category对象。由于这个,行

category = get_object_or_404(Category, slug=slug)
您的category_view()中的

会为您提供404页。

答案 1 :(得分:0)

我正在学习 YouTube 教程,但我对代码做了一些不同的风格

我收到此错误是因为我在底部的项目 url 中包含了我的 cart.urls

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    
    path('', include('app.urls')),
    path('', include('store.urls')), 
    path('', include('cart.urls')),
    
]

当我把它改成顶部或中间

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    
    path('', include('app.urls')),

    # changed cart url to middle
    path('', include('cart.urls')), 
    
    path('', include('store.urls')),
    
]

成功了。

我通过阅读https://www.reddit.com/r/django/comments/avg0zi/no_post_matches_the_given_query/

找到了这个解决方案