2012-02-23 4 views

답변

2

. 당신은 키의 사전을 만들 수) 내가. 사용자 정의 미들웨어 (Django | Middleware)를 작성 제안 당신이 process_request 메소드를 오버라이드 (override)하는 경우, 당신은 HttpRequest에 개체에서 URL을 확인할 수 있고 (따라서 request.META.get('SERVER_NAME')을 언어를 지정합니다 (도메인)/value (언어) 쌍을 사용하여 적절한 값을 할당하십시오.

+2

로드 균형 조정 중이거나 호스트가 어떻게 든 동적 인 경우 실제로 request.META.get ('HTTP_HOST')이 더 잘 작동 할 수 있습니다. – Furbeenator

1

사용자가 자신 만의 하위 도메인을 만들도록 허용 한 경우를 제외하고 최근에이 문제가 발생했습니다. 사용자 지정 미들웨어를 만들어 해결했습니다. 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/

관련 문제