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

Django两个不同项目如何共用MySQL数据库中custom user表实现登录

Django双项目共用CustomUser表方案

是否需要在project B中定义相同的自定义用户模型

需要定义和project A字段完全一致的CustomUser模型,但要通过配置让Django在project B中不管理该表的结构变更,避免影响原有表数据。

具体配置步骤

  • 步骤1:配置project B的数据库连接
    确保project B的settings.py中数据库配置和project A完全一致,指向同一个MySQL库:
# project B/settings.py 数据库配置示例
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '和project A相同的数据库名',
        'USER': '数据库账号',
        'PASSWORD': '数据库密码',
        'HOST': '数据库服务地址',
        'PORT': '3306',
    }
}
  • 步骤2:编写project B的CustomUser模型
    在project B中新建app(例如命名为accounts),在models.py中编写和project A字段完全一致的CustomUser模型,添加两个核心Meta配置:
# project B/accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # 此处所有自定义字段和project A的CustomUser保持完全一致,示例如下
    phone = models.CharField(max_length=11, blank=True, null=True)
    avatar = models.ImageField(upload_to='avatar', blank=True, null=True)

    class Meta:
        managed = False # 告诉Django不要对该表做迁移、表结构修改操作
        db_table = 'project A中CustomUser对应的实际表名' # 可在MySQL中查看,通常格式为「A项目的app名_模型名」,例如`a_accounts_customuser`
  • 步骤3:配置全局用户模型指向
    在project B的settings.py中添加AUTH_USER_MODEL配置,和project A的配置保持一致:
# project B/settings.py
AUTH_USER_MODEL = 'accounts.CustomUser'
  • 步骤4:登录校验逻辑复用
    配置完成后直接用Django自带的auth校验方法即可,和单项目的登录逻辑用法完全相同:
from django.contrib.auth import authenticate, login

def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            # 登录成功跳转
        else:
            # 账号密码错误提示

注意事项

  • 若后续project A修改了CustomUser的字段,必须同步修改project B中CustomUser的字段定义,否则会出现查询报错
  • 所有CustomUser表的结构变更、数据写入操作统一在project A中执行,不要在project B中修改该表数据/结构
  • 两个项目的Django大版本尽量保持一致,避免密码哈希算法差异导致密码校验失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:27:01