Джанго шаблонизирует.Получить название категории - PullRequest
0 голосов
/ 28 декабря 2018

Я сейчас пытаюсь понять, как я могу отобразить заголовок категории в моем шаблоне.Я пытаюсь реализовать представление фильтра, и это последний необходимый шаг.в настоящее время я получаю следующий вывод

Latest Post's in <QuerySet [<Category: testcategory>]>

template.html

<h1 class="center">Latest Post's in {{ categories }}</h1> < right here!!!
{% for post in posts %}
    <div class="post">
        <h3><u><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></u></h3>
        <p>{{ post.content|safe|slice:":1000"|linebreaksbr}}
            {% if post.content|length > 500 %}
                <a href="{% url 'post_detail' pk=post.pk %}">... more</a>
            {% endif %}</p>
        <div class="date">
            <a>Published by: <a href="{% url 'profile' pk=post.author.pk %}">{{ post.author }}</a></a><br>
            <a>Published at: {{ post.published_date }}</a><br>
            <a>Category: <a href="{% url 'category_by' pk=post.category.pk %}">{{ post.category }}</a></a><br>
            <a>Tag(s): {{ post.tag }}</a><br>
            <a>Comment(s): {{ post.comment_set.count }}</a>
        </div>
    </div>
{% endfor %}

views.py

def category_show(request, pk):
    list_posts = Post.objects.get_queryset().filter(category_id=pk).order_by('-pk')
    paginator = Paginator(list_posts, 10)  # Show 10 Posts per page
    page = request.GET.get('page')
    posts = paginator.get_page(page)
    categories = Category.objects.all()
    return render(request, 'myproject/post_list_by_category.html', {'posts': posts, 'categories': categories})

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Category.objects.all () возвращает набор запросов. Если вы хотите использовать {{category.title}}, вам следует использовать метод .get ()

def category_show(request, pk):
    list_posts = Post.objects.get_queryset().filter(category_id=pk).order_by('-pk')
    paginator = Paginator(list_posts, 10)  # Show 10 Posts per page
    page = request.GET.get('page')
    posts = paginator.get_page(page)
    cat = Category.objects.get(id=pk)
    return render(request, 'myproject/post_list_by_category.html', {'posts': posts, 'cat': cat})

<h1 class="center">Latest Post's in {{ cat.title }}</h1> < right here!!!
0 голосов
/ 28 декабря 2018

В вашем коде categories - это набор запросов (набор категорий), а не отдельная категория.Вам нужно только выбрать категорию, соответствующую pk:

def category_show(request, pk):
    category = Category.objects.get(pk=pk)
    list_posts = Post.objects.filter(category_id=pk).order_by('-pk')
    paginator = Paginator(list_posts, 10)  # Show 10 Posts per page
    page = request.GET.get('page')
    posts = paginator.get_page(page)
    return render(request, 'myproject/post_list_by_category.html', {'posts': posts, 'category': category})

и

<h1 class="center">Latest Post's in {{ category.title }}</h1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...