как объединить нумерацию страниц и тег git (классифицировать мой блог)? - PullRequest
0 голосов
/ 27 февраля 2020

Так что я пытаюсь создать страницу блога с 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">&laquo; 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 &raquo;</a>
        {% endif %}
    </span>
</div>

пожалуйста, помогите мне и спасибо за ваши ответы

...