0

django-hostsを使用して、異なるドメイン名が 1 つの Django アプリを指すようにしています。私の Django アプリの大部分は mydomain.com のサイトを提供していますが、1 つの関数が mydoma.in などの短縮 URL を処理しています。

django-hostsdefault_urls.pyの使用は、mydomain.com でshort_urls.py使用され、mydoma.in で使用されます。*_urls.pyリクエストのドメインに基づいて、1 つのファイルのみがロードされます。

default_urls.pyただし、2 つのケースでは、正しく完了するために mydoma.in にリクエストを送信する必要があるようです。ここに私の views.py ファイルからの関連コードがあります:

def short_url(request, value):
    try:
        object = Object.objects.get(key=value)
        # (1)  Need to load default_urls.py here to /object URL is resolved
        return redirect (settings.BASE_URL + object.get_absolute_url(), permanent=True)
    except:
        # (2)  Need to load default_urls.py here to 404 page renders
        raise Http404

andを呼び出す直前にアプリケーションshort_urls.pyを強制的に「切り替える」方法はありますか?default_urls.pyredirectraise

(関連するルートをあるファイルから別のファイルにコピーすることはできません。そうしないと、URL が 2 つのドメインで解決されるためです。)

可能な回避策として、次のコードをメモしました。

request.urlconf = settings.ROOT_URLCONF

代わりに、オブジェクトを更新されたオブジェクトを使用するコードとredirect置き換える方法はありますか?raiserequesturlconf

ありがとう!

4

1 に答える 1