Django 导航栏类别链接问题



当我单击菜单中的类别链接时,出现以下错误。

找不到页面 (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 %}

相关内容

  • 没有找到相关文章

最新更新