데코레이터가 정상적으로 작동하지만 사용자가 필수 그룹에 속하지 않은 경우 오류 메시지 (메시지 프레임 워크을 사용하고 싶습니다.)를 표시하려고합니다.데코레이터 실패시 오류 메시지 표시
def group_required(*group_names):
"""Requires user membership in at least one of the groups passed in."""
def in_groups(user):
if user.is_authenticated():
if bool(user.groups.filter(name__in=group_names)) or user.is_superuser:
return True
return False
return user_passes_test(in_groups)
나는 같은 것을 사용하여 전화 : 여기에 장식의 난 (이것은 요청 객체를 필요로하기 때문에) 메시지 프레임 워크를 사용하려면이 snippet를 사용하여 시도
@require_http_methods(['GET'])
@group_required('supervisor')
def home_view(request):
return render(request, 'home.html')
는하지만 실현 메시지 프레임 워크 미들웨어가 데코레이터 안에 설치되지 않은 것 같습니다.
나는 그것이 무엇이든 :) 변경 기꺼이
업데이트 :
def group_required(request, *group_names):
"""Requires user membership in at least one of the groups passed in."""
def in_groups(user):
if user.is_authenticated():
if user.groups.filter(name__in=group_names).exists() or user.is_superuser:
return True
else:
# I'm getting:
# You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware
messages.add_message(request, messages.ERROR, 'Group is not allowed')
return False
return user_passes_test(in_groups, request)
요청에 포함 된 내용이 기록되었으며 요청 개체가 아닙니다. 내 문제는 데코레이터에 요청 객체를 전달하고 있다고 생각합니다. – chachan