Я сторонник сохранения как можно большего количества логики на уровне представления (говоря вообще о шаблоне проектирования MVC).Так почему бы не использовать декораторы, чтобы направлять пользователя к различным представлениям в зависимости от его привилегий?В вашем urls.py определите шаблон для администраторов:
url(r'^admin/$', 'user.views.admin_index'),
#do so for your other admin views, maybe more elegantly than this quick example
Затем определите декоратор, чтобы выгнать пользователя, если он не администратор
def redirect_if_not_admin(fn):
def wrapper(request):
if request.user.is_staff():
return fn(request)
#or user.is_superuser(), etc
else:
return HttpResponseRedirect('/Permission_Denied/')
return wrapper
И в вашем администратореviews
@redirect_if_not_admin
def index(request):
##do your thing
Это больше кода, чем два других ответа, которые не являются неправильными.Это просто личное предпочтение держать помехи в взглядах.