Покроковий посібник по Django Tenants з реальним проектом — Створення багатокористувацького блогу
Якщо ви працюєте над проектом SaaS (Програмне забезпечення як послуга) або додатком, який повинен підтримувати кілька клієнтів з ізольованими даними, використання Django Tenants стане чудовим рішенням. У цьому посібнику я проведу вас через створення багатокористувацької блого-системи за допомогою Django та бібліотеки django-tenants
. Наприкінці цього посібника у вас буде працюючий багатокористувацький блог або будь-який SaaS проект, де кожен орендар (клієнт) має свої власні ізольовані пости.
Зміст
- Що таке багатокористувацька архітектура?
- Налаштування проекту Django
- Встановлення та налаштування
django-tenants
- Створення моделі орендаря
- Реалізація багатокористувацьких блог-постів
- Тестування додатку
- SEO поради для багатокористувацьких додатків на Django
- Висновок
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. Тестування додатку
- Створіть орендаря (клієнта) за допомогою панелі адміністрування Django.
- Додайте кілька блог-постів для цього орендаря.
- Перейдіть на піддомен орендаря і перевірте, чи відображаються тільки його власні пости.
7. SEO поради для багатокористувацьких додатків на Django
- Стратегія піддоменів: Переконайтеся, що кожен орендар має свій унікальний піддомен. Наприклад,
tenant1.yourblog.com
має показувати тільки контент, специфічний для Орендаря 1. - Канонічні URL: Використовуйте канонічні URL Django, щоб уникнути проблем з дублюванням контенту для різних орендарів.
- Генерація Sitemap: Генеруйте окремі карти сайту для кожного орендаря, щоб допомогти пошуковим системам індексувати їхній контент.
- Мета-описи: Включайте динамічні мета-описи, які будуть специфічні для контенту кожного орендаря.
- Robots.txt: Дозволяйте чи забороняйте пошуковим системам індексувати орендарів згідно з вашими вимогами.
8. Висновок
У цьому посібнику ми створили просту багатокористувацьку блого-систему, використовуючи Django Tenants. Багатокористувачність — потужна функція для додатків SaaS, і з правильним налаштуванням вона допоможе ефективно управляти кількома клієнтами.
Дякую за прочитане. Якщо ви знайшли щось неправильне або знаєте кращі способи це зробити, дайте знати в коментарях нижче.
Якщо вам сподобався пост, натисніть на кнопку 👏, щоб інші змогли знайти його корисним. Ви можете слідкувати за мною на
GitHub | daily.dev | LinkedIn | YouTube
Інші бібліотеки
Django
30 статей
Перекладено з: Django Tenants Tutorial with Real Project — Build a Multi-Tenant Blog Application