Django обеспечивает питание нескольких магазинов из одной кодовой базы в одном домене - PullRequest
0 голосов
/ 07 мая 2010

Я новичок в django и python и пытаюсь выяснить, как изменить существующее приложение для запуска нескольких магазинов через один домен.

Промежуточное программное обеспечение сайтов Django кажется неуместным в данном конкретном случае, поскольку оно управляет разными доменами, а не сайтами, проходящими через один и тот же домен, например, : domain.com/uk domain.com/us domain.com/es и т. д.

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

Формы также должны немного отличаться, например, незначительные отклонения в полях и проверка для каждого магазина конкретной страны.

Я думаю, что решение будет следующим, и мне бы хотелось получить отзывы от опытных джангоеров:

Вкратце: та же кодовая база, но отдельные файлы URL для конкретной страны, отдельные шаблоны и отдельная база данных

  1. Создание класса промежуточного программного обеспечения, который выполняет локализацию IP, определяет страну на основе URL-адреса и создает соединение с базой данных, например, / au / будет указывать на конкретную базу данных au и так далее.

  2. в корне urls.py есть маршруты, которые указывают на отдельный файл маршрутизации, специфичный для страны, например ... 1019 *

* * 1 022 (г '^ аи /', включают в себя ( 'urls_au')), (Г '^' ES /, включают в себя ( 'urls_es')), * +1023 *
  1. использовать один каталог шаблонов, но в этом каталоге есть локализованная структура каталогов, например /base.html и /uk/base.html и напишите пользовательский загрузчик шаблонов, который сначала ищет локальные шаблоны. (или иметь отдельный каталог для каждого магазина и установить путь к каталогу шаблона в промежуточном программном обеспечении)

  2. использовать интернационализацию django для управления строками перевода по всему

  3. небольшие отклонения в формах и моделях (например, у ZA есть поле идентификатора, во Франции - «код двери» и «пол» и т. Д.) Я не уверен, как обрабатывать эти варианты, но я подозреваю, что таблицы будут содержать все поля но допускает пустые значения, и модель будет иметь все поля, кроме пустых. Формы будут немного изменены для каждого магазина.

В любом случае, я хочу получить отзывы о том, как лучше всего реализовать это решение для нескольких сайтов. Кажется, что это сработает, но кажется немного «хакерским», и мне интересно, есть ли более элегантный способ заставить это решение работать.

Спасибо, imanc

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Нет причин, по которым вы не можете использовать структуру сайтов с несколькими установками Django, обслуживаемыми из разных подкаталогов в одном домене.

0 голосов
/ 07 мая 2010

ОК. Я продолжил копать, и похоже, что структура сайтов Django не подходит для одного домена, но с разными путями:

www.mydomain.com / uk
www.mydomain.com / au
и т. д.

Два других параметра - это настройки apache / wsgi, где для каждого подкаталога указывается отдельный wsgi и settings.py.Это кажется немного громоздким;Я не хочу переконфигурировать apache каждый раз, когда открываю новый магазин.Кроме того, это усложнит ведение локальной версии, онлайн-разработки, промежуточных и живых версий сайта.

Я думаю, что в этой ситуации лучшее решение - взглянуть на промежуточное ПО, которое отслеживает код страны.и как-то меняет настройки базы данных и root urls.py.Затем каждому приложению нужно будет знать свой текущий базовый URL для таких вещей, как действия формы, ссылки и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...