Я конвертирую сайт электронной коммерции как регион (например, США, ЕС), поэтому он будет в основном чувствовать себя как другой сайт для посетителей на основе контента они увидят, хотя это на самом деле один сайт (по многим причинам). Большинство путей на моем сайте станут специфичными для региона, путем префикса с областью в начале пути, например, '/ us /' (я мог бы преобразовать все, но если это значительно упростило).В Django, как добавить региональный префикс к большинству контуров
Мой план:
Middleware идентифицирует области на основе 1) запроса пути, 2) сессии, или 3) гадать на основе IP-адреса в указанном порядке, и он установлен на объекте запроса. Кроме того, как только они используют региональный путь, он получает значение сеанса. Таким образом, контекст региона переносится через URL-адреса, которые не относятся к региону.
URL-шаблоны, специфичные для региона, должны обновляться в соответствии с областью, хотя я уже обнаружил регион в промежуточном программном обеспечении, поскольку логика была сложнее, чем просто путь. Тем не менее, я должен сделать это параметром и переходить во все мои взгляды по следующей причине (реверсирование). Кроме того, любой путь, который становится региональным, будет иметь свои предыдущие шаблоны 301, перенаправляющие их региональные пути.
Для создания ссылок, которые относятся к региону, мне нужно обновить многие вызовы reverse() и {% url%}, добавив аргумент region. Хотелось бы, чтобы там был какой-то слой, который я мог бы настроить для динамического изменения URL-адресов со знанием запроса.
Мой основной вопрос - лучший способ справиться с реверсированием (последняя пуля). Он чувствует себя как много ненужной работы. Я открыт для лучших способов решения проблемы в целом.
Обновления:
- Я исключил поддомены, потому что они, как известно, плохо для SEO, передачи полномочий. Кроме того, я думаю, что субдомены могут подразумевать совершенно разные настройки, тогда как пока я буду управлять этим как единым webapp.
- Как указывает @RemcoGerlich, в основном я хочу добавить автоматическое поведение, которое LocaleMiddleware/i18n_patterns добавляет как в urlconf, так и в обратном направлении.
Thanks Remco. В основном я исключал субдомены, потому что они, как известно, плохо для SEO. Например, я хочу, чтобы доменный кредит для моего существующего сайта принес мне пользу в новых регионах. Мне придется посмотреть на документы на языке. –
Да, что они делают для языков, именно то, что я пытаюсь сделать. Я могу сделать то же самое на стороне urlconf, используя https://docs.djangoproject.com/en/1.10/topics/http/urls/#including-other-urlconfs, однако я не вижу, как сделать реверсивную работу? –
И даже включение не обеспечивает автоматическое поведение удаления кода языка с пути и не отправки его в качестве аргумента в представления. Также я хочу. –