Как изменить шаблон в зависимости от группы пользователя?
На мой сайт на 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)
})