【发布时间】:2018-11-16 11:07:32
【问题描述】:
Django 是否可以为每个客户端使用相同的链接和数据库?
您好,我是 Django 新手,有一个问题。 我将一个 PHP 系统带到 Django,其中所有客户端都使用相同的链接来访问系统,但每个客户端都有其包含用户、访问组等的数据库。 在自定义登录屏幕中,他们通知他们的客户端 ID、用户和密码进行身份验证,其中客户端 ID 始终是数据库的名称。
我做了以下代码来更改可能是错误的数据库连接:
def change_db (self):
connections ['default']. settings_dict ['NAME'] = self.db
return True
代码甚至交换了我想要访问的数据库,但是在我的本地机器上使用 runserver 进行测试,如果另一个客户端同时访问,例如在另一个浏览器中,它会取代另一个客户端。
有没有人遇到过或者有解决的想法?搜了下路由器,不知道能不能解决我的问题,或者切换连接去掉其他客户端也有同样的问题。
感激不尽。
【问题讨论】:
-
据我所知,这些设置是不可变的。在运行时更改设置会很危险,因为有几个 Django 部分不是为处理此类更改而设计的。
-
我明白,django 没有更好的方法来选择用户将使用的数据库吗?也许每个会话都不会更改设置?
-
是的,例如,您可以使用数据库路由:docs.djangoproject.com/en/2.0/topics/db/multi-db/#using-routers
-
我会尝试使用路由器,如果你得到结果我会通知你
标签: python django django-2.0