В настоящее время я все еще учусь с Django и создаю свой блог, используя Django 2.2. но почему-то есть ошибка при использовании django-taggit.
Как отфильтровать пост по тегам?
Я прочитал документацию, но не до конца рассмотрено, как реализовать это в реальном проекте.
Вот мой код:
Я пробовал несколько разных способов, которые я все еще ищу в StackOverflow, но до сих пор не получил ответа.
Результаты /blog/tag/post-tagged
совпадают с /blog
.
Так как мне отфильтровать его от views.py
? или возможно от blog.html
?.
Таким образом, результат /blog/tag/post-tagged
только из отмеченного сообщения.
вот мой код:
models.py
:
...
from taggit.managers import TaggableManager
"Post Model"
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
slug = models.SlugField(max_length=100, null=True, blank=True, unique=True)
title = models.CharField(max_length=200)
tags = TaggableManager(blank=True)
...
views.py
def blogIndex(request):
posts = Post.objects.all().order_by("-created_date")[0:4]
context = {"posts": posts,}
return render(request, 'blog.html', context)
def Tagging(request, slug):
tags = Tag.objects.filter(slug=slug)
posts = Post.objects.all().order_by("-tags")
context = {
'tags': tags,
'posts': posts,
}
return render(request, 'blog.html', context)
urls.py
path("tag/<slug:slug>/", views.Tagging, name='tagged'),
my blog.html
:
<div id="tags-middle">
<div class="tags-cloud">
Tags :
{% for tag in post.tags.all %}
<a href="{% url 'tagged' tag.slug %}">{{ tag.name }}</a>
{% endfor %}
</div>
</div>