Hi,
>> To make things a bit easier, I'm about to write my own mixin for that so
>> I only have to provide a method that checks if credentials are OK.
>
> As you've noticed, you can override the dispatch to decorate the view
> as required, and if you have a common authentication pattern, you can
> put that logic into a mixin.
For future reference, this is what I use now:
class LoginMixin(object):
def get_test_func(self):
return getattr(self, 'test_func', lambda u: u.is_authenticated())
def get_login_url(self):
return getattr(self, 'login_url', None)
def get_redirect_field_name(self):
return getattr(self, 'redirect_field_name', None)
def dispatch(self, request, *args, **kwargs):
from django.contrib.auth.decorators import user_passes_test
return user_passes_test(
self.get_test_func(),
login_url = self.get_login_url(),
redirect_field_name = self.get_redirect_field_name()
)(super(LoginMixin, self).dispatch
)(request, *args, **kwargs)
class DashboardView(LoginMixin, TemplateView):
login_url = '/base/login'
template_name = 'dashboard.html'
LoginMixin *must* be the first base class, otherwise it could not
override View.dispatch in the other base classes.
--
Pascal Germroth
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.