/ /複数のドメインを使用してdjangoプロジェクトを隠す方法 - python、django、apache、dns

複数のドメインを使用してdjangoプロジェクトをマスクする方法 - python、django、apache、dns

特定のドメインに設定された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インスタンスを指すことができます。