Как отобразить список категорий в шаблоне django - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу отобразить список категории на главной (базовой) странице. (mysite здесь. http://jgahn.pythonanywhere.com/)

before select category

Когда я щелкнул по категории «Химия», мне потребовался список сообщений с категорией «Химия» и список отображения категории (правая сторона, голубой цвет, химия и физика). Это моя проблема, список категорий отображается только при доступе к какой-либо категории.

Я хочу отображать всегда без доступа в категории (например, на боковой панели).

Большое спасибо за вашу помощь заранее!

after select category

Вот мой view.py

from .models import Post, Comment, Category

    def list_of_post_by_category(request, category_slug):
    categories = Category.objects.all()
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        posts = posts.filter(category=category)
    template = 'myblog/list_of_post_by_category.html'
    context = {'categories': categories, 'posts': posts, 'category': category,}
    return render(request, template, context)

Это моя главная страница. html

        <p class="taglist"><a href="{% url 'list_of_post_by_category' category.slug %}">{{ category }}</a></p>
        {% endfor %}

list_of_post_by_category. html

{% extends 'myblog/main_page.html' %}

{% block content %}
<h4><span style="color: #ab4a67; font-weight: bold;">{{category.name}}</span> category</h4>
<hr>
<!--<button class="btn-tag">{{ category.name }}</button>-->
  {% for post in posts %}
    <div class="list">
      <h6><a href="{% url 'post_detail' pk=post.pk %}" style="text-decoration:none;"> &gt; &nbsp; {{ post.title }}</a>
         &nbsp; &nbsp; <span class="small">{{ post.published_date|date }} {% if user.is_superuser %} {% if post.comments.count >= 1 %}
         &nbsp; {{ post.comments.count }} Comments {% endif %} {% endif %}
         &nbsp; <button class="btn-tag">{{ tag }}</button>
       </span>
      </h6>
    </div>
  {% endfor %}
{% endblock %}

models.py

class Category(models.Model):
    name = models.CharField(max_length=250, null=True)
    slug = models.SlugField(max_length=250, unique=True, null=True)

    class Meta:
        ordering = ('name',) # abc ordering
        verbose_name = 'category'
        verbose_name_plural = 'categories'

    def get_absoulte_url(self):
        return reverse('list_of_post_by_category', args=[self.slug])

    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=200)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
    ...

urls.py

    ...
    path('category/<category_slug>/', views.list_of_post_by_category, name="list_of_post_by_category"),
    ...
...