我想在用户登录时切换数据库。我已创建此登录信号..但它不起作用
from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in
from django.db import connections
@receiver(user_logged_in)
def db_switch(sender, **kwargs):
user_db = 'userdb_%s' % kwargs['user'].username
cursor = connections[user_db].cursor()
数据库在settings.py
中定义。我必须将此游标设为全局吗?或者这一直是错误的做法吗?
谢谢!
答案 0 :(得分:2)
这是错误的做法。
老实说,我认为在Django中没有一种直接,稳定的方法。它不是为它设计的。
相反,我为每个用户设置了settings_ username
。py文件,它指定了一个名为personal或者其他东西的辅助数据库。然后,在记录之后,让它们重定向到新域,例如username
。example.com,它使用一个唯一的.wsgi文件来提取设置 username
。py文件。< / p>
现在,就系统而言,每个网站对于该用户来说是完全独立和独特的。只需确保将会话cookie设置为example.com,以便他们在访问其用户网站时仍然登录。