Как вывести название текущего тега в шаблон? (Тот, в котором мы находимся)
Я пытаюсь отобразить имя текущего тега, то есть того, в котором мы находимся. Не работает. Как правильно написать, чтобы отобразить тег в шаблоне?
        #Models
        from django.db import models
        from taggit.managers import TaggableManager
        class Blog(models.Model):
            title = models.CharField(max_length=150)
            created_at = models.DateTimeField(auto_now_add=True)
            description = models.CharField(max_length=550)
            tags = TaggableManager()
    
            def __str__(self):
                return self.title
        #Views
        from django.shortcuts import render
        from django.views.generic import ListView
        from .models import *
        from taggit.models import Tag
        class TagMixin(object):
              def get_context_data(self, **kwargs):
                  context = super(TagMixin, self).get_context_data(**kwargs)
                  context['tags'] = Tag.objects.all()
                  return context
        class PostIndexView(TagMixin,ListView):
            model = Blog
            template_name = 'blog.html'
            queryset=Blog.objects.all()
            context_object_name = 'posts'
        class TagIndexView(TagMixin,ListView):
            model = Blog
            template_name = 'blog.html'
            context_object_name = 'posts'
            def get_queryset(self):
                return Blog.objects.filter(tags__slug=self.kwargs.get('tag_slug'))
        #Templates
        {% if tag %}
             <h3>Posts by tag: {{ tag }}</h3>  <!-- Does not display tag name -->
        {% endif %}
        
P.s. Сайт просит больше описания, но что еще можно описать здесь? Проблема с выводом описана
 Если я правильно понял - у вас в шаблоне нет переменной tag. У вас есть tags. В этом случае:
#Templates
{% for tag in tags %}
    <h3>Posts by tag: {{ tag }}</h3>
{% endfor %}
 Если вы хотите иметь специальный tag_slug в контексте - вы должны добавить его в контекст вручную, как вы делаете это с tags. Или вы можете использовать эту конструкцию:
#Templates
{% if view.kwargs.tag_slug %}
    <h3>Posts by tag: {{ view.kwargs.tag_slug }}</h3>
{% endif %}
Кроме того, если вы хотите иметь только 1 текущий тег, вы должны отфильтровать его:
class TagMixin(object):
    def get_context_data(self, **kwargs):
        context = super(TagMixin, self).get_context_data(**kwargs)
        context['tags'] = Tag.objects.all()
        context['tag'] = Tag.objects.filter(slug=self.kwargs.get('tag_slug', '')).first()
        return context
Кстати, __str__ всегда должен возвращать тип str. Прямое преобразование в строку предпочтительнее:
class Blog(models.Model):
    def __str__(self):
        return f'{self.title}'
В новом Python можно конкатенировать массивы и можно иметь пустой super, а классы являются по умолчанию дочерними от object:
class TagMixin:
      def get_context_data(self, **kwargs):
          return super().get_context_data(**kwargs) | {'tags' : Tag.objects.all()}
 Для общего ListView вам не нужно определять queryset и model. Достаточно одного из них. Определить queryset на пару микросекунд быстрее, чем model. Также вам не нужно переопределять имя шаблона и имя_объекта_контекста. Просто используйте стандартные blogs_list и blogs_app/blogs_list.html
class PostIndexView(TagMixin,ListView):
    queryset=Blog.objects.all()
    # Thats all, you dont need any other attributes