2015-04-21 35 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> 

你是否覆蓋默認管理員urls.py?您可以查看Django文檔here瞭解有關設置命名空間的詳細信息。

+0

我沒有覆蓋默認管理員urls.py.當我通過輸入地址手動訪問管理網站的註銷頁面時,它工作正常。這只是管理網站左上角沒有「註銷」按鈕。 – adlius45