Так что я пытаюсь создать страницу блога с django. я хотел классифицировать сообщения с тегом git, и я сделал это правильно. тогда я хотел разбить посты на блоге, и это тоже сработало. но когда я хочу объединить их вместе, теги не работают. нумерация страниц работает, но когда я нажимаю на теги, они просто показывают пустую страницу
это мои views.py:
from django.shortcuts import render, get_object_or_404
from .models import Post
from taggit.models import Tag
from django.template.defaultfilters import slugify
from django.core.paginator import Paginator
def blog_view(request):
posts = Post.objects.all()
paginator = Paginator(posts, 2)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
common_tags = Post.tags.most_common()[:]
context = {
'common_tags':common_tags,
'page_obj': page_obj,
}
return render(request, 'blog.html', context)
def tagged(request, slug):
tag = get_object_or_404(Tag, slug=slug)
common_tags = Post.tags.most_common()[:4]
posts = Post.objects.filter(tags=tag)
context = {
'tag':tag,
'common_tags':common_tags,
'posts':posts,
}
return render(request, 'blog.html', context)
это мои models.py:
from django.db import models
from taggit.managers import TaggableManager
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=250)
description = models.TextField()
summ = models.TextField(max_length=200)
author = models.ForeignKey(User, on_delete=models.CASCADE)
published = models.DateField(auto_now_add=True)
prof = models.CharField(max_length=100)
tags = TaggableManager()
slug = models.SlugField(unique=True, max_length=100)
def __str__(self):
return self.title
и это мой шаблон:
<ul>
{% for tag in common_tags %}
<li><a href="{% url 'tagged' tag.slug %}">{{ tag.name }}</a></li>
{% empty %}
<li>no tags</li>
{% endfor %}
<li><a href="{% url 'blog-page' %}">all</a></li>
</ul>
{% for post in page_obj %}
<div class="col-md-6">
<div class="cards">
<div class="row no-gutters border rounded flex-md-row mb-4 shadow-sm h-md-250">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="my-1"><a href="{% url 'detail' p.slug %}">{{p.title}}</a></h3>
<p class="mb-auto">{{p.description}}</p>
<p class="mb-auto text-muted">{{p.published}}</p>
</div>
</div>
</div>
</div>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
пожалуйста, помогите мне и спасибо за ваши ответы