Декораторы (Decorators)
Модуль содержит декораторы для контроля доступа на основе ролей пользователей.
Декораторы для контроля доступа в системе проверки домашних заданий.
Содержит декораторы для: - Ограничения доступа только для студентов - Ограничения доступа только для преподавателей - Универсальной проверки роли пользователя
- assignments.decorators.student_required(function=None, redirect_url='/')[исходный код]
Декоратор для ограничения доступа только для студентов
- assignments.decorators.teacher_required(function=None, redirect_url='/')[исходный код]
Декоратор для ограничения доступа только для преподавателей
- assignments.decorators.role_required(role)[исходный код]
Универсальный декоратор для проверки роли
student_required
- assignments.decorators.student_required(function=None, redirect_url='/')[исходный код]
Декоратор для ограничения доступа только для студентов
Декоратор для проверки, что текущий пользователь является студентом.
Использование:
@login_required @student_required def student_only_view(request): # Код доступен только студентам pass
Поведение:
Если пользователь не авторизован - перенаправление на страницу входа
Если пользователь не студент - возвращается HttpResponseForbidden (403)
teacher_required
- assignments.decorators.teacher_required(function=None, redirect_url='/')[исходный код]
Декоратор для ограничения доступа только для преподавателей
Декоратор для проверки, что текущий пользователь является преподавателем.
Использование:
@login_required @teacher_required def teacher_only_view(request): # Код доступен только преподавателям pass
Поведение:
Если пользователь не авторизован - перенаправление на страницу входа
Если пользователь не преподаватель - возвращается HttpResponseForbidden (403)
Примеры использования
Представление только для студентов
from django.contrib.auth.decorators import login_required
from .decorators import student_required
@login_required
@student_required
def homework_detail(request, pk):
homework = get_object_or_404(Homework, pk=pk)
return render(request, 'homework_detail.html', {'homework': homework})
Представление только для преподавателей
from django.contrib.auth.decorators import login_required
from .decorators import teacher_required
@login_required
@teacher_required
def create_homework(request):
if request.method == 'POST':
form = HomeworkForm(request.POST)
if form.is_valid():
form.save()
return render(request, 'create_homework.html')