Настройте отдельный поддомен для каждого языка сайта в django - PullRequest
2 голосов
/ 24 февраля 2012

Я хочу иметь возможность использовать субдомены для указания языка сайта, так же как django-localeurl использует префикс url для этой цели.Есть ли какой-нибудь нехакерский способ сделать это?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Для этого я бы предложил написать собственное промежуточное ПО ( Django | Middleware) . Если вы переопределите метод process_request, вы можете определить URL-адрес из объекта HttpRequest и назначить язык соответствующим образом (request.META.get('SERVER_NAME')). Вы можете создать словарь пар ключ (домены) / значение (язык), чтобы назначить соответствующий.

1 голос
/ 24 февраля 2012

Я недавно столкнулся с этой же проблемой, за исключением того, что я позволил пользователям создавать свои собственные настраиваемые поддомены.Я решил это путем создания пользовательского промежуточного программного обеспечения.модель Poster будет соответствовать вашей языковой модели.Я не думаю, что разбор URL-адресов является тривиальной задачей, я использую tldextract, он отлично работает.https://github.com/john-kurkowski/tldextract

from our_jobs.apps.poster.models import Poster
import tldextract


class SubdomainMiddleware:
  """Handle if request is coming from subdomain"""

  def process_request(self, request):
    """Filter the given request"""
    host = request.META.get('HTTP_HOST', '')
    extract = tldextract.extract(host)
    request.poster = None
    if extract.subdomain:
        try:
            request.poster = Poster.objects.get(subdomain=extract.subdomain)
        except Poster.DoesNotExist:
            pass

Это документация промежуточного программного обеспечения.https://docs.djangoproject.com/en/dev/topics/http/middleware/

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