Django. Вопрос по общей философии дизайна: лучший способ реализации "переключаемых" отдельных функций на сайте

Допустим, я хочу создать проект интернет-магазина, который я смогу продавать потенциальным клиентам. Однако идея состоит в том, чтобы сделать так, чтобы клиент выбирал функции, которые он хочет иметь в своем магазине (из заранее составленного списка), и платил только за эти функции, что позволит избежать оплаты за то, что ему не нужно.

Например, один клиент хочет иметь интернет-магазин с корзиной, историей покупок, графиками, отчетами. Другой хочет только простую регистрацию и корзину (но, возможно, в будущем они захотят, чтобы я "включил" и другие функции).

Мой вопрос: какой, по вашему мнению, лучший способ решения этой проблемы с точки зрения разработчика Django?

Мои мысли:

  1. Create every feature as a separate app and deploy the whole thing commenting out the features that client did not pay for. And when a client wants additional features, I simply go to settings.py and uncomment the app they requested. Can I even make changes on the settings.py file on a live website without restarting it?
  2. Create an admin panel for myself (the superuser) that will have an ability to turn features on or off. So when the client pays for a new feature, I simply go to my admin panel and put a tick mark next to it, and voila! That way I don't have to make changes in settings.py file (and I don't need access to the hosting server, just the django admin panel). Thought I'm not sure how to do this programmatically. I think I need a separate Model with a lot of BooleanFields(?)

Каковы плюсы и минусы каждого подхода и какие еще способы достижения этой цели вы можете предложить?

Я бы рекомендовал подход с использованием панели администратора. Если вы планируете запустить сервис онлайн, к которому смогут получить доступ многие люди, чтобы создать магазин, вы не захотите вносить изменения в код для такой простой вещи, как добавление функции. Это может стать громоздким и не является хорошей практикой. Также для изменения файла settings.py обычно требуется перезапуск веб-сервиса (т.е. Apache) для повторной инициализации файла.

При подходе с использованием панели администратора все, что вам нужно сделать, - это найти клиента, посмотреть, какие у него есть функции, и установить флажки. Конечно, вы можете усложнить этот процесс, особенно если новая функция будет стоить клиенту дороже. Но просто административный подход лучше всего, он дает вам гибкость и вам не нужно беспокоиться о том, что сайт может быть разрушен в результате изменения кода.

Вернуться на верх