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

Django自定义登录模板异常:仅管理员可登录且跳转至后台

问题分析与解决方案

一、普通用户/员工无法登录的问题

核心原因
  1. 自定义用户模型Account的is_active字段默认值为False,而UserManager.create_user方法未主动设置用户为活跃状态,Django拒绝未激活用户登录。
  2. create_user方法存在字段名错误:参数roll_no被赋值给不存在的roll_no字段,模型中实际字段为roll_number,导致用户创建时字段不匹配。
修改方案

修改manager.py中的create_user方法:

def create_user(
    self, email, first_name, last_name, roll_no, password, department=None
):
    if not email:
        raise ValueError("User requires an Email")
    if not first_name:
        raise ValueError("User requires a First name")
    if not roll_no:
        raise ValueError("User requires a Roll Number")

    user = self.model(
        email=self.normalize_email(email),
        first_name=first_name,
        last_name=last_name,
        roll_number=roll_no,  # 修正字段名匹配模型
        department=department,
        is_active=True,  # 强制激活新用户
    )
    user.set_password(password)
    user.save(using=self._db)
    return user

二、登录后跳转至后台而非Web应用的问题

核心原因

CustomLoginView中设置了success_url = reverse_lazy("dashboard"),直接覆盖了全局配置LOGIN_REDIRECT_URL = "blogs",导致所有登录用户跳转到dashboard(若管理员用户无此路由,会默认跳转到admin后台)。

修改方案

修改views.py中的CustomLoginView,移除自定义的success_url或改为与全局配置一致:

class CustomLoginView(LoginView):
    model = Account
    form_class = CustomLoginForm
    redirect_authenticated_user: bool = True
    template_name: str = "accounts/login.html"
    # 移除原success_url,自动使用settings中的LOGIN_REDIRECT_URL
    # 或手动指定为目标路由:success_url = reverse_lazy("blogs")

若需强制所有用户(包括管理员)登录后跳转到blogs,可重写get_success_url方法:

class CustomLoginView(LoginView):
    model = Account
    form_class = CustomLoginForm
    redirect_authenticated_user: bool = True
    template_name: str = "accounts/login.html"

    def get_success_url(self):
        return reverse_lazy("blogs")

三、额外检查项

  1. 确认settings.py中LOGIN_REDIRECT_URL = "blogs"对应的路由在项目总urls.py中已正确配置且名称匹配。
  2. 运行python manage.py makemigrations和python manage.py migrate,确保管理器逻辑修改生效(无需修改模型字段,仅需同步数据)。
  3. 测试新注册用户的is_active字段是否为True,验证登录功能是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:15:44