You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换Django Admin登录页面?自定义额外认证后需覆盖默认登录

替换Django Admin默认登录页面的方法

要让Django Admin使用你带额外认证机制的自定义登录页面,核心是通过自定义AdminSite类覆盖默认的登录路由,以下是具体步骤:

1. 创建自定义AdminSite类

在你的应用目录下新建admin_site.py(或直接在admin.py中),定义继承自AdminSite的子类,重写URL配置替换默认登录路由:

from django.contrib.admin import AdminSite
from django.urls import path
from your_app.views import custom_login  # 导入你的自定义登录视图

class CustomAdminSite(AdminSite):
    def get_urls(self):
        # 获取默认Admin路由,将自定义登录路由放在最前面优先匹配
        default_urls = super().get_urls()
        custom_urls = [
            path('login/', custom_login, name='login'),
        ]
        return custom_urls + default_urls

# 实例化自定义Admin站点
custom_admin = CustomAdminSite(name='custom_admin')

2. 注册模型到自定义Admin站点

把原本注册到默认admin.site的模型,改为注册到你刚创建的custom_admin:

# 示例:在admin.py中
from django.contrib.admin import ModelAdmin
from your_app.models import YourModel
from your_app.admin_site import custom_admin

class YourModelAdmin(ModelAdmin):
    list_display = ('id', 'name')  # 自定义模型显示字段

custom_admin.register(YourModel, YourModelAdmin)

3. 修改项目URL配置

在项目根目录的urls.py中,替换默认Admin路由为自定义站点的路由:

from django.urls import path
from your_app.admin_site import custom_admin

urlpatterns = [
    # ... 其他项目路由
    path('admin/', custom_admin.urls),
]

4. 适配自定义登录视图的重定向逻辑

确保你的自定义登录视图能处理Admin的next参数,登录成功后跳转到后台页面:

# 示例自定义登录视图
from django.contrib.auth import login
from django.shortcuts import redirect, render

def custom_login(request):
    if request.method == 'POST':
        # 执行你的额外认证逻辑(比如验证码、双因素验证等)
        # 认证通过后获取用户实例
        user = your_authentication_logic(request.POST)
        
        if user and user.is_staff:  # 仅允许管理员用户登录Admin
            login(request, user)
            # 跳转到登录前的Admin页面,默认跳转到Admin首页
            next_page = request.GET.get('next', '/admin/')
            return redirect(next_page)
    
    # GET请求返回自定义登录模板
    return render(request, 'your_custom_login.html')

可选:仅替换登录模板(无需自定义视图)

如果只是想修改登录页面的UI,不需要变更认证逻辑,可以直接在项目templates目录下创建admin/login.html,Django会自动优先使用这个模板覆盖默认Admin登录页面。


内容的提问来源于stack exchange,提问作者Muhammad Zubair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:31:01