当我单击菜单中的类别链接时,出现以下错误。
找不到页面 (404(
请求方法:获取
请求网址:http://127.0.0.1:8000/post/categorylist/
提出者: post.views.post_detail
没有帖子与给定的查询匹配。
models.py
def get_categorylist_url(self):
return reverse('post:categorylist', kwargs={'slug': self.slug})
views.py
def post_categorylist(request, slug):
if not request.user.is_superuser:
raise Http404()
post = get_object_or_404(Post, slug=slug)
post.categorylist()
return redirect('post:categorylist')
urls.py
path('categorylist/',views.post_categorylist, name='categorylist'),
标题.html
<li><a href="{% url 'post:categorylist' %}">Kategoriler</a></li>
类别列表.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
Test message.
</body>
</html>
如果您的根urls.py
如发布,您应该 http://127.0.0.1:8000/categorylist/,因为这是URL链接到的路径。
但是,您的视图中有一个slug
,但它不是由您的 URL 处理的,因此您可能也会遇到问题。由于您的视图需要 slug,因此请尝试更改视图以查找它;
path('categorylist/<slug:slug>/',views.post_categorylist, name='categorylist'),
您的错误由以下人员引发:post.views.post_detail
,因此您的网址是错误的。 你想要获取 slug 参数,但你的 url 没有任何 slug 参数。首先,您应该修复您的网址路径。
比,如果你想当用户点击x类别链接并获取x类别中的产品时,让我们举个例子:
首先创建此视图:
views.py:
def category_list(request):
# Category loops on index page.
category_list = Category.objects.filter()
context = {
"category_list": category_list,
}
return context
除此之外,我们应该将此上下文添加到我们的上下文处理器中,以便在任何地方访问(因为它是导航栏,所以导航栏将位于每个页面的顶部,对吧?
settings.py:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ["templates"],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
************************************,
'YOURMODELNAME.views.category_list',
],
},
},
]
最后,您将访问项目上的所有类别,只需在模板上添加以下代码:
导航栏.html:
{% for category in category_list %}
<a href="{% url 'categories' slug=category.slug %}">
{{ category.name }} <!--You can use ul-li for displaying them-->
</a>
{% endfor %}
好的,我们显示了我们的类别,但是当用户单击任何链接时,应重定向到单击类别中的过滤列表。所以我们应该为这个页面创建页面和链接:
views.py:
def category_list(request, slug):
category = Category.objects.get(slug=slug)
posts = Post.objects.filter(category=category)
context = {
"posts": posts, #filtered products
}
return render(request, "posts_in_category.html", context)
urls.py:
path('category/<slug:slug>', views.category_list, name="category_list")
posts_in_category.html:
{% for post in posts_in_category %}
{{ post.name }}
{% endfor %}
如果你错过了什么,我可以用土耳其语解释;)
我正在使用这个代码。如何添加链接?
views.py
def categorylist(request):
# Category loops on index page.
categorylist = Category.objects.filter()
context = {
"categorylist": categorylist,
}
return render(request, "post/categories.html", context)
分类.html
{% for post in categorylist %}
{{ post.name }}
{% endfor %}