我是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'),
)
答案 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/
找到了这个解决方案