Как изменить шаблон в зависимости от группы пользователя?

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

Если пользователю разрешено добавлять курсы, то обрабатывается шаблон button_for_teacher. А сам этот шаблон вставлен в base.html в теге include

def is_instructor(request, username):
    user = User.objects.get(username=username)
    if user.has_perm('course.can_add_course'):
        return render(request, 'courses/course/button_for_teacher.html')

button_for_teacher.html

{% extends "base.html" %}
{% block title %}
{% endblock %}
{% block content %}
<a href="{% url "manage_course_list" %}">Your courses</a>
{% endblock %}

base.html

{% include "courses/course/button_for_teacher.html" %}

View, отображающий список курсов для всех, на странице со списком и должна быть ссылка

class CourseListView(TemplateResponseMixin, View):
    model = Course
    template_name = 'courses/course/list.html'

    def get(self, request, subject=None):
        subjects = Subject.objects.annotate(total_courses=Count('courses'))
        courses = Course.objects.annotate(total_modules=Count('modules'))
        if subject:
            subject = get_object_or_404(Subject, slug=subject)
            courses = courses.filter(subject=subject)
        return self.render_to_response({'subjects':subjects,
            'subject':subject,
            'courses':courses})

Ответы (1 шт):

Автор решения: Roman Konoval

Добавьте в контекст переменную и используйте ее в шаблоне, чтоб определить нужно ли генерировать кусок со ссылкой:

# в файле courses/course/list.html добавьте в нужном месте
{% if user_can_manage_list %}
    <a href="{% url "manage_course_list" %}">Your courses</a>
{% endif %}

Во view:


def is_instructor(request):
   return request.user.has_perm('course.can_add_course')


class CourseListView(...):
....
  def get(self, request, subject=None):
    ...
    return self.render_to_response({'subjects':subjects,
            'subject':subject,
            'courses':courses,
            'user_can_manage_list': is_instructor(request.user)
    })
→ Ссылка