Как маршрутизировать базы данных в Django в зависимости от того, какой пользователь вошел в систему?
Я делаю сайт на django и хочу, чтобы у каждого пользователя была своя база данных, например, сейчас у меня есть 2 базы данных, размещенные на azure, и в моем файле settings.py у меня есть следующее:
DATABASES = {
'default' :{},
'user1': {
'ENGINE': 'django.db.backends.mysql',
'NAME' : 'temp monitoring',
'USER' : 'maxwhitehead@maxiot',
'PASSWORD' : '#######',
'PORT' : 3306,
'HOST' : 'maxiot.mysql.database.azure.com',
},
'user2':{
'ENGINE': 'django.db.backends.mysql',
'NAME' : 'temp monitoring',
'USER' : 'maxwhitehead@maxiot2',
'PASSWORD' : '#######',
'PORT' : 3306,
'HOST' : 'maxiot2.mysql.database.azure.com',
}
}
У меня есть папка users, и в ней есть файл Fields, который содержит следующее:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username','email','password1','password2']
Я хочу, чтобы люди заходили на сайт и видели сообщения из связанной с ними базы данных. Я знаю, что мне нужно что-то сделать с маршрутизацией базы данных, но я не уверен, что именно, любая помощь была бы признательна, спасибо.
Если позволите спросить, почему вы используете разные базы данных для каждого пользователя? Если цель состоит в том, чтобы каждый пользователь получал только свою информацию, вы можете достичь идентичных результатов, имея одну базу данных и получая информацию о пользователе из базы данных, используя его имя пользователя для фильтрации ваших моделей. Таким образом, каждая модель будет иметь поле имени пользователя, и вы можете получить данные конкретного пользователя из этой таблицы, используя что-то вроде:
MyCustomModel.objects.filter(username=logged_in_username)
Это также имеет то преимущество, что его можно легче масштабировать по мере добавления пользователей.