25 Nisan 2024 05:17

Anasayfa

undefined...

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,
}
 

routers.py

class AuthRouter(object):
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 None
def 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 None
def 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 None
def 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
 

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ı.

Django

hakkında diğer konular

Makdos Bilişim Teknolojileri 2015 - 2022