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

如何在Django中获取已在Laravel中注册的用户数据

Laravel侧开放用户数据供Django系统获取的落地方案

方案一:Laravel开放API接口(最推荐,耦合度最低)

是跨系统数据交互最通用的实现方式,两个系统互不侵入,后续扩展其他同步需求也很方便。

Laravel端实现步骤

  • 用Laravel自带的Sanctum或者Passport做接口身份校验,避免接口公开泄露用户数据
    • 安装Sanctum之后,给Django系统分配固定的API Token,Token权限仅开放用户数据查询,禁止修改、删除操作权限
    • 定义接口路由,建议放在routes/api.php下,加auth:sanctum中间件校验,示例路由代码:Route::get('/users/export', [UserController::class, 'exportForDjango'])->middleware('auth:sanctum');
    • 控制器逻辑里按需返回字段,不要返回敏感信息比如密码哈希、支付关联数据,可增加分页/增量查询参数,比如传last_updated_at只返回该时间之后新增/修改的用户,减少数据传输量
  • 接口安全补充:限制请求IP仅允许Django服务器的IP访问,设置接口请求频率限制,比如每分钟最多10次请求

Django端实现步骤

  • 用内置的requests库发起请求,把Laravel分配的API Token放在请求头里,示例代码:
import requests

headers = {"Authorization": "Bearer 你申请的Laravel API Token"}
response = requests.get("https://你的laravel域名/api/users/export", headers=headers, params={"last_updated_at": "2024-01-01 00:00:00"})
user_list = response.json()
  • 拿到数据后按需存入Django本地数据库,或者直接做逻辑处理,可配置定时任务定时拉取增量数据,不用每次业务都实时请求

方案二:两个系统共享用户数据库(适合内网部署场景,性能更高)

不需要走网络接口传输,查询性能更高,仅适合两个系统部署在同一内网、网络可互通的场景。

  • 前提:Django服务器可以直接访问Laravel的用户数据库,且不需要公网暴露数据库端口
  • Django端配置多数据库连接,在settings.py里新增Laravel数据库的连接配置:
DATABASES = {
    'default': {
        # 你原本的Django数据库配置
    },
    'laravel_user': {
        'ENGINE': 'django.db.backends.mysql', # 跟Laravel用的数据库类型保持一致
        'NAME': 'laravel的库名',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': 'Laravel数据库地址',
        'PORT': '3306',
    }
}
  • 给Django创建用户表的Model,设置managed = False,不会修改Laravel的表结构,示例:
from django.db import models

class LaravelUser(models.Model):
    name = models.CharField(max_length=255)
    email = models.EmailField(unique=True)
    created_at = models.DateTimeField()
    
    class Meta:
        db_table = 'users' # Laravel用户表的表名,默认是users
        managed = False
        app_label = '你的Django应用名'
  • 之后就可以直接在Django里用LaravelUser.objects.using('laravel_user').all()查询用户数据,不用走接口传输
  • 注意事项:给Django用的数据库账号仅开放users表的查询权限,禁止增删改权限,避免误操作修改Laravel的用户数据

方案三:定时导出文件同步(适合实时性要求低的场景)

实现成本最低,适合对数据实时性要求不高、不需要频繁同步的场景。

  • Laravel端写定时任务,比如每天凌晨导出新增的用户数据为CSV/JSON文件,存到指定的服务器目录
  • Django端写定时任务,从Laravel服务器拉取该文件,解析后存入本地
  • 缺点是数据同步有延迟,不适合需要实时获取用户数据的场景

选择建议:优先选方案一,耦合度最低,后续扩展空间大;内网部署且对性能要求极高可选方案二;实时性要求很低的场景可选方案三。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:02