Посібник по Django Tenants з реальним проєктом — створення багатокористувацького блогу.

pic

Покроковий посібник по Django Tenants з реальним проектом — Створення багатокористувацького блогу

Якщо ви працюєте над проектом SaaS (Програмне забезпечення як послуга) або додатком, який повинен підтримувати кілька клієнтів з ізольованими даними, використання Django Tenants стане чудовим рішенням. У цьому посібнику я проведу вас через створення багатокористувацької блого-системи за допомогою Django та бібліотеки django-tenants. Наприкінці цього посібника у вас буде працюючий багатокористувацький блог або будь-який SaaS проект, де кожен орендар (клієнт) має свої власні ізольовані пости.

Зміст

  1. Що таке багатокористувацька архітектура?
  2. Налаштування проекту Django
  3. Встановлення та налаштування django-tenants
  4. Створення моделі орендаря
  5. Реалізація багатокористувацьких блог-постів
  6. Тестування додатку
  7. SEO поради для багатокористувацьких додатків на Django
  8. Висновок

1. Що таке багатокористувацька архітектура?

У багатокористувацькій архітектурі одна інстанція додатку обслуговує кілька орендарів (клієнтів), при цьому їхні дані ізольовані. Такий підхід часто використовується в SaaS-додатках для зниження витрат на інфраструктуру та забезпечення роботи сервісу з окремих інстанцій бази даних.

Наприклад, у нашому багатокористувацькому блозі кожен орендар матиме свій піддомен (наприклад, tenant1.yourdomain.com, tenant2.yourdomain.com) і буде бачити тільки свої власні пости.

2. Налаштування проекту Django

Для створення нового проекту Django для блогу, виконайте цю команду або дотримуйтесь інструкцій:

django-admin startproject multi_tenant_blog  
cd multi_tenant_blog

Створіть віртуальне середовище та активуйте його, щоб ізолювати середовище проекту та встановити необхідні пакети:

python -m venv env  
source env/bin/activate  
pip install django django-tenants psycopg2-binary

Створіть ваш проект Django блогу:

django-admin startproject multi_tenant_blog .

3. Встановлення та налаштування django-tenants

У файлі settings.py вашого проекту додайте django_tenants до INSTALLED_APPS:

INSTALLED_APPS = [  
 'django.contrib.admin',  
 'django.contrib.auth',  
 'django.contrib.contenttypes',  
 'django.contrib.sessions',  
 'django.contrib.messages',  
 'django.contrib.staticfiles',  
 'django_tenants', # це django_tenants  
]

Налаштуйте middleware:

MIDDLEWARE = [  
 'django.middleware.security.SecurityMiddleware',  
 'django.contrib.sessions.middleware.SessionMiddleware',  
 'django.middleware.common.CommonMiddleware',  
 'django.middleware.csrf.CsrfViewMiddleware',  
 'django.contrib.auth.middleware.AuthenticationMiddleware',  
 'django.contrib.messages.middleware.MessageMiddleware',  
 'django.middleware.clickjacking.XFrameOptionsMiddleware',  
 'django_tenants.middleware.main.TenantMainMiddleware', # middleware для орендарів  
]

4. Створення додатку tenants (Орендарі)

Створіть новий додаток Django для обробки орендарів:

python manage.py startapp tenants

Додайте ваш додаток (tenants) до INSTALLED_APPS в settings.py:

INSTALLED_APPS = [  
 ...  
 'django_tenants', # це django_tenants  
 'tenants', # ваш додаток  
]

Оголосіть модель Tenant в tenants/models.py вашого проекту:

from django_tenants.models import TenantMixin  
from django.db import models  


class Tenant(TenantMixin):  
 name = models.CharField(max_length=100)  

 def __str__(self):  
 return self.name

Запустіть міграції після створення моделі Tenant:

python manage.py makemigrations tenants  
python manage.py migrate_schemas

5. Реалізація багатокористувацьких блог-постів

Створіть новий додаток для блог-постів:

python manage.py startapp blog

Додайте ваш додаток (blog) до INSTALLED_APPS в settings.py:

INSTALLED_APPS = [  
 ...
'tenants', #ваш додаток  
 'blog', #ваш додаток для блогу  
]

Оголосіть модель BlogPost в blog/models.py:

from django.db import models  


class BlogPost(models.Model):  
 title = models.CharField(max_length=200)  
 content = models.TextField()  
 created_at = models.DateTimeField(auto_now_add=True)  

 def __str__(self):  
 return self.title

6. Тестування додатку

  1. Створіть орендаря (клієнта) за допомогою панелі адміністрування Django.
  2. Додайте кілька блог-постів для цього орендаря.
  3. Перейдіть на піддомен орендаря і перевірте, чи відображаються тільки його власні пости.

7. SEO поради для багатокористувацьких додатків на Django

  • Стратегія піддоменів: Переконайтеся, що кожен орендар має свій унікальний піддомен. Наприклад, tenant1.yourblog.com має показувати тільки контент, специфічний для Орендаря 1.
  • Канонічні URL: Використовуйте канонічні URL Django, щоб уникнути проблем з дублюванням контенту для різних орендарів.
  • Генерація Sitemap: Генеруйте окремі карти сайту для кожного орендаря, щоб допомогти пошуковим системам індексувати їхній контент.
  • Мета-описи: Включайте динамічні мета-описи, які будуть специфічні для контенту кожного орендаря.
  • Robots.txt: Дозволяйте чи забороняйте пошуковим системам індексувати орендарів згідно з вашими вимогами.

8. Висновок

У цьому посібнику ми створили просту багатокористувацьку блого-систему, використовуючи Django Tenants. Багатокористувачність — потужна функція для додатків SaaS, і з правильним налаштуванням вона допоможе ефективно управляти кількома клієнтами.

Дякую за прочитане. Якщо ви знайшли щось неправильне або знаєте кращі способи це зробити, дайте знати в коментарях нижче.

Якщо вам сподобався пост, натисніть на кнопку 👏, щоб інші змогли знайти його корисним. Ви можете слідкувати за мною на

GitHub | daily.dev | LinkedIn | YouTube

Інші бібліотеки

pic

Mehedi Khan

Django

Переглянути список

30 статей

pic

pic

pic

Перекладено з: Django Tenants Tutorial with Real Project — Build a Multi-Tenant Blog Application

Leave a Reply

Your email address will not be published. Required fields are marked *