我在同一台服务器上有两个 Django 项目。第一个在几个月前推出,此后收集了数百个用户帐户。第二个项目将在几天后启动,我们希望第二个项目允许第一个应用程序的用户使用相同的凭据进行身份验证。
起初,我打算简单地将第一个项目中的用户表转储到第二个项目中,但这不允许同步解决方案(用户在项目 B 上创建帐户,然后无法访问项目 A)。
Django 是否有某种方法可以本地切换数据库名称(因为它们在同一台服务器上)以进行用户身份验证,然后在完成身份验证后返回到原始数据库?
如果没有,您认为什么是解决我的问题的最佳解决方案?另外 - 我们正在使用 MySQL。
如果再等一段时间,Django 最终将获得多数据库支持。
但截至目前,我认为解决您的问题的最佳解决方案是在对两个数据库的用户表进行更改后同步两个数据库的用户表。您可以使用信号支持来处理此问题:
from django.db import models
def user_post_save(sender, instance, **kwargs):
... run script to synchronize tables ...
models.signals.post_save.connect(user_post_save, sender=User)
Run Code Online (Sandbox Code Playgroud)
您将无法使用 ORM...但是转储源表,然后删除目标表并导入到其中将相对轻松。这肯定会导致计时问题,但交易基本上可以解决这个问题。如果两个站点相互干扰是一个问题,我可能会考虑在更新期间在 User 表上设置写锁,并在 User 模型的 save() 方法(或pre_save 信号)在完成保存之前检查锁定。这将保证 post_save 信号在同步期间不会被发送。
归档时间: |
|
查看次数: |
1345 次 |
最近记录: |