特定のドメインに設定されたDjango Webサイトがあります example.com
。私は今、私は彼らの言語を使わなければならない異なった国のために同じウェブサイトを使うことを計画しています。例えば中国では、私はサブドメインを作成することを計画しています chinese.example.com
これはまったく同じことを指します example.com
プロジェクトが言語は中国語に切り替えられます。これもマスクしたい chinese.example.com
サブドメインと別のドメイン chinaexample.com
。 Apache&Djangoを使ってこれを達成する方法を教えてください。
回答:
回答№1は0最初のステップ - すべてのドメインがdjango configの "ALLOWED_HOSTS"に追加されていることを確認してください。
次に - あなたがあることになるコンテンツがあれば特定のドメインでしか利用できない場合は、djangoに組み込まれているサイトフレームワークを使用すると便利です。しかし、複数のドメインで1つの言語を使用し、ドメインではなく言語で使用できるコンテンツが必要な場合は、ドメイン(または言語)にコンテンツを割り当てるための独自の方法を作成することをお勧めします。
第三段階 - あなたのドメインをチェックし、それに割り当てられた言語を有効にするミドルウェアを書く。ミドルウェアの例は次のようになります。
class DomainLanguageMiddleware:
def process_request(self, request):
try:
host = request.META["HTTP_HOST"]
host_port = host.split(":")
if len(host_port) == 2:
host = host_port[0]
if host in settings.LANG_MAP:
request.LANG = settings.LANG_MAP[host]
translation.activate(request.LANG)
request.LANGUAGE_CODE = request.LANG
except KeyError:
pass
このコードは使っています LANG_MAP
これは、ドメインをキーとして、そのドメインに割り当てられた言語を値として含む辞書である必要があります。
このソリューションを使用すると、すべてのドメインまたはサブドメインが1つのsettings.pyファイルで1つのdjangoインスタンスを指すことができます。