Merci à arie, la réponse m'a beaucoup aidé, mais elle ne fonctionne pas pour moi.
Quand j'ai trouvé cet extrait, j'ai réussi à le faire fonctionner correctement : http://djangosnippets.org/snippets/983/
Cette solution a fonctionné pour moi :
La fonction d'aide
Cette fonction a l'avantage d'être réutilisable dans d'autres endroits, en tant que remplacement de la fonction user.is_authenticated
. Elle pourrait par exemple être exposée comme une balise de modèle.
def my_custom_authenticated(user):
if user:
if user.is_authenticated():
return user.groups.filter(name=settings.MY_CUSTOM_GROUP_NAME).exists()
return False
Le décorateur
Je viens de mettre ça en haut de mon views.py
puisque c'est si court.
def membership_required(fn=None):
decorator = user_passes_test(my_custom_authenticated)
if fn:
return decorator(fn)
return decorator
L'utiliser
@membership_required
def some_view(request):
...