裝飾工作正常,但如果用戶不屬於任何必需的組,我想顯示錯誤消息(我想使用消息框架)。這裏的裝飾:當裝飾失敗時顯示錯誤消息
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)
我把它使用類似:
@require_http_methods(['GET'])
@group_required('supervisor')
def home_view(request):
return render(request, 'home.html')
我用這個snippet使用消息框架(因爲這需要要求對象)的嘗試,但它認識到, 消息框架中間件未出現在裝飾器內部安裝。
我願意改變一切代價:)
更新:
我正在尋找:
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 2013-05-05 14:27:20