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.py
redirect
raise
(関連するルートをあるファイルから別のファイルにコピーすることはできません。そうしないと、URL が 2 つのドメインで解決されるためです。)
可能な回避策として、次のコードをメモしました。
request.urlconf = settings.ROOT_URLCONF
代わりに、オブジェクトを更新されたオブジェクトを使用するコードとredirect
置き換える方法はありますか?raise
request
urlconf
ありがとう!