Django projelerde ortak giriş istenirse routers.py ile admin ve auth ortak kullanıma açılabilir. Örneğin 2 projede de ortak kullanıcılar kullanacak ise settings.py de DATABASE_ROUTERS tanımlaması yapılır ve kullanıcıların alınacağı ek database eklenmeli.
settings.py
DATABASE_ROUTERS = ['ipkayitlari.routers.AuthRouter']
DATABASES['auth_db'] = {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '5432',
'CONN_MAX_AGE': 0,
}
class AuthRouter(object):NOT: 2 projede ayrı sunucularda ise firewall ve iptablesdan izin verilmesi gerekir. Ayrıca; veritabanı da dışarıdan bağlantıya açık olmalı.def db_for_read(self, model, **hints):
if model._meta.app_label == 'auth' or model._meta.app_label == 'admin' or model._meta.app_label == 'contenttypes':
return 'auth_db'
return Nonedef db_for_write(self, model, **hints):
if model._meta.app_label == 'auth' or model._meta.app_label == 'admin' or model._meta.app_label == 'contenttypes':
return 'auth_db'
return Nonedef allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'auth' or obj2._meta.app_label == 'auth' or obj1._meta.app_label == 'admin' or obj2._meta.app_label == 'admin' or obj1._meta.app_label == 'contenttypes' or obj2._meta.app_label == 'contenttypes':
return True
return Nonedef allow_migrate(self, db, app_label, model_name=None, **hints):
if db == 'auth_db':
return app_label == 'auth'
elif app_label == 'auth':
return False
return None
Django
hakkında diğer konular