我已经从django-taggit实现了taggit函数。 标签没问题,我在django管理员和博客中都看到了。 但是,当我单击博客上的标签时,就会出现错误。 它不使用标签过滤,多数民众赞成在我的问题。 如果您需要更多信息,请告诉我。
我做错了什么?
错误消息:
Request Method: GET
Request URL: https://www.code-reminder.com/python/
Raised by: blog.views.PostDetail
我的代码:
Urls.py
from . import views
from django.urls import path, re_path
from django.urls import include
from django.views.generic.base import RedirectView
favicon_view = RedirectView.as_view(url='/home/UrosDobricic/mysite/static/favicon.png', permanent=True)
urlpatterns = [
path('', views.PostList.as_view(), name='home'),
path('about', views.about, name='about'),
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
##re_path(r'^favicon\.ico$', favicon_view),
path("tag/<slug:slug>/", views.tag, name='tag'),
##path('ckeditor/', include('ckeditor.urls'))
##path('^search/', views.search, name="search")
]
views.py
from django.views import generic
from .models import Post
from django.shortcuts import render
class PostList(generic.ListView):
model = Post
template_name = 'index.html'
class PostDetail(generic.DetailView):
model = Post
template_name = 'post_detail.html'
def tag(request, slug):
posts = Post.objects.filter(tags__slug=tag)
return render(request, 'index.html', {"posts": posts, "tag": tag})
def about(request): 返回render(request,'about.html',{})
models.py
from taggit.managers import TaggableManager
tags = TaggableManager()
index.html
<!-- Blog Entries Column -->
<div class="col-md-8 mt-3 left">
{% for post in post_list %}
<div class="card mb-4" >
<div class="card-body">
<h2 class="card-title">{{ post.title }}</h2>
<p class="card-text text-muted h6">{{ post.Author }} | {{ post.created_on}} |
Tag:
{% for tag in posts.tags.all %}
<a href="{% url 'tag' tag.slug %}">{{ tag.name }}</a>
{% empty %}
None
{% endfor %}
</p>
我想在同一页面上显示它index.html。 那我做错了吗? 请帮助
答案 0 :(得分:0)
您没有链接到正确的路径。您的URL转到/<tag-slug>/
,但您需要/tag/<tag-slug>/
。
无论如何,您应该始终使用{% url %}
标签来创建链接。所以:
{% for tag in post.tags.all %}
<a href="{% url 'tag' tag.slug %}">{{ tag.name }}</a>
{% empty %}