Пишешь модели
Если нужно - расширяешь модель Юзера
Пишешь вьюхи.
А теперь магия: во вьюхах где доступ должны иметь только зарегистрированные юзеры вешаешь на функции декоратор @staff_member_required или @login_required
если Вьюхи CBV - пишешь миксин
class LoginRequiredMixin(object):
"""
A login required mixin for use with class based views. This Class is a light wrapper around the
`login_required` decorator and hence function parameters are just attributes defined on the class.
Due to parent class order traversal this mixin must be added as the left most
mixin of a view.
The mixin has exaclty the same flow as `login_required` decorator
"""
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
У версии 1.9 уже есть этот миксин, и тогда во вьюхе его просто наследуешь. Порядок наследования важен. Справа всегда должна быть родительская вьюха с которой идет наследование, а слева другие вью и миксины.
class CreateSongView(LoginRequired , CreateView):
Можно миксинчиками порезать доступ
У шаблонах немного по-другому:
{% if user.is_authenticated %} или что-то наподобии is_admin или можно реализовать все с помощью доступов permissions:
В админке создать группы, раздать каждой по своему доступу и тогда в шаблоне и вьюхах можно будет проверять по типу has_permission('poll.add')