2014-02-05 6 views
0

Я использую Django = 1.6.1.django admin redirect после успешного входа

В настоящее время в моем проекте административная система выводит меня на панель управления администратора после успешного входа в систему администратора (например, localhost: 8000/admin /). Отсюда я могу посетить большинство моих приложений, таких как пользователи, категории, группы и т. Д.

90% времени я хочу посетить страницу администратора пользователей (например, localhost: 8000/admin/my_project/users /). таким образом, я пытаюсь найти способ перенаправить админ-логин на страницу администраторов, а не на панель управления. Как я могу это сделать?

ответ

0

Я не знаю, является ли это правильным способом решения этой проблемы, но именно так я решил свою проблему.

Я создал подкласс AdminSite под названием CustomAdminSite и перезаписать login() принять URL перенаправления с помощью REDIRECT_FIELD_NAME (то есть с помощью «следующего» скрытого параметра поля).

class CustomAdminSite(AdminSite): 
    @never_cache 
    def login(self, request, extra_context=None): 
     """ 
     Displays the login form for the given HttpRequest. 
     """ 
     from django.contrib.auth.views import login 
     context = { 
      'title': _('Log in'), 
      'app_path': request.get_full_path(), 
      REDIRECT_FIELD_NAME: settings.ADMIN_LOGIN_REDIRECT_URL, 
     } 
     context.update(extra_context or {}) 

     defaults = { 
      'extra_context': context, 
      'current_app': self.name, 
      'authentication_form': self.login_form or AdminAuthenticationForm, 
      'template_name': self.login_template or 'admin/login.html', 
     } 
     return login(request, **defaults) 

site = CustomAdminSite() 

в urls.py

admin.site.login = path.to.custom.site.login 

в settings.py

ADMIN_LOGIN_REDIRECT_URL = '/admin/my_project/users/' 

P.S: пожалуйста, дайте мне знать, если есть лучший способ сделать это :)

-1

Вы можете сделать это, переопределив URL 'admin: index' (url с именем 'index' в пространстве имен admin).

Смежные вопросы