簡體   English   中英

如何在Django的管理網站中添加“注銷”功能

[英]How to add 'logout' function to a Admin site in Django

在我的Django項目中,我創建了一個單獨的admin.py,並在該文件中擴展了AdminSite類,如下所示:

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

但是后來我發現,在該管理站點中,左上角沒有退出鏈接。 如何將其添加到管理站點?

如果您要擴展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,它將使用名稱空間admin:logout查找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文檔以獲取有關設置名稱空間的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM