2017-11-16 18 views
0

は、私は次のコマンドでDjangoのサーバーを開始しました:、なぜ:私は次のコードを、サイトのドメイン問題

from django.contrib.sites.models import Site 
    current_site = Site.objects.get_current() 
    print (current_site.domain) 

を使用する場合

python manage.py runserver 192.168.31.79:8030 

結果は192.168.31.79になりますポートは8030ですか?誰でも私のためにそれを説明することができますか?どのようにして192.168.31.79:8030をコードで取得できますか?どうもありがとう。

+0

'current_site = Site.objects.get_current()で'これはあなたの現在のアクティブなドメインを取得することはできません。 Djangoの設定でSITE_ID変数を使用してモデルサイトのアクティブオブジェクトを取得します これらのリンクを見てくださいhttps://stackoverflow.com/questions/24808972/find-host-and-port-in-a-django-アプリケーション、https://docs.djangoproject.com/en/1.11/ref/contrib/sites/ –

答えて

0

Siteget_currentで解決する場合、Djangoは最初にSITE_IDが設定ファイルに設定されているかどうかをチェックします。 SITE_IDがある場合は、domainフィールドに格納されているものを返します(キャッシュされたバージョンをSITE_CACHEに取得するか、キャッシュに追加して返します)。

SITE_IDが存在しない場合Djangoはdomainは、それがSiteオブジェクトであるならば、チェックキャッシュ内に存在するかどうかを確認するためにrequest.get_host()と最初のクエリでホストを解決します。

結果が得られない場合はportが削除され、同じ方法で再度チェックされます。

Siteオブジェクトのそれぞれを調べて、そのポートがdomainに入っているかどうかを調べます。 SITE_CACHEに格納されているものを調べていない場合。

ドキュメントhttps://docs.djangoproject.com/en/dev/ref/contrib/sites/#django.contrib.sites.shortcuts.get_current_site

関連する問題