<p>这里有一个适用于Django 3+的解决方案</p>
<p>用<code>my_admin</code>模块替换<code>django.contrib.admin</code></p>
<pre><code>INSTALLED_APPS = [
...
'my_admin.apps.AdminConfig',
# 'django.contrib.admin',
...
]
</code></pre>
<p>AdminConfig(my_admin/apps.py):</p>
<pre><code>from django.contrib.admin.apps import AdminConfig as ContribAdminConfig
class AdminConfig(ContribAdminConfig):
default_site = 'my_admin.admin_site.AdminSite'
</code></pre>
<p>AdminSite(my_admin/admin_site.py):</p>
<pre><code>from django.contrib.admin import AdminSite as ContribAdminSite
from django.views.decorators.cache import never_cache
class AdminSite(ContribAdminSite):
@never_cache
def logout(self, request, extra_context=None):
"""
Define your custom logout functionality here.
Checkout the super logout method to get a baseline implementation.
Log out the user for the given HttpRequest.
This should *not* assume the user is already logged in.
"""
# Your logout code here.
return super().logout(request, extra_context)
</code></pre>