Taggit在博客上显示标签,但不使用标签过滤

时间:2019-05-23 09:31:31

标签: python django tags django-taggit

我已经从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。 那我做错了吗? 请帮助

1 个答案:

答案 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 %}