2015-04-21 3 views
0

В моем проекте Django, я создал отдельный admin.py и в этом файле, я расширить класс AdminSite следующим образом:Как добавить функцию «выход» на администратора сайта в Django

class UserAdminSite(AdminSite): 
    site_header = "Admin Site" 
    site_title = "Manage User and Groups" 
    login_form = AuthenticationForm 

def has_permission(self, request): 
    return request.user.is_active and request.user.is_admin_user 

Но тогда Я обнаружил, что в этом админ-сайте нет ссылки в левом верхнем углу для выхода из системы. Как добавить это на сайт администратора?

ответ

0

Если вы расширяете AdminSite вы должны уже иметь функцию выхода из системы,

https://github.com/django/django/blob/master/django/contrib/admin/sites.py#L349:

@never_cache 
def logout(self, request, extra_context=None): 
    """ 
    Logs out the user for the given HttpRequest. 
    This should *not* assume the user is already logged in. 
    """ 
    from django.contrib.auth.views import logout 
    defaults = { 
     'current_app': self.name, 
     'extra_context': dict(self.each_context(request), **(extra_context or {})), 
    } 
    if self.logout_template is not None: 
     defaults['template_name'] = self.logout_template 
    return logout(request, **defaults) 

, если вы посмотрите на base.html работу администратора он ищет URL с пространством имен администратора: выход из системы

https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/base.html#L46:

<a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a> 

Записываете ли вы по умолчанию admin urls.py? Подробные сведения об установке пространства имен можно проверить в документах Django here.

+0

Я не перезаписал по умолчанию admin urls.py. И когда я получаю доступ к странице выхода на сайт администратора вручную, набрав адрес, он работает нормально. Это просто, что в левом верхнем углу сайта администратора нет кнопки «выхода». – adlius45

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