2010-11-04 6 views

cevap

53

Genellikle settings.py böyle bir şey koymak), varsa ters proxy üstbilgileri dikkate alınarak. Bir isteğiniz yoksa, ana makine adını ayarlarınızda bir yere yapılandırmanız gerekir. Sadece sistem ana bilgisayar adına bakmak, birçok durumda belirsiz olabilir, sanal ana bilgisayarlar en yaygın olanıdır.

+7

Docker kullanıyorsanız, çözümünüz çalışmıyor. URL yerine kapsayıcı kimliğini gösterecektir. –

+134

Çözümüm Docker'ın varlığından önce yazılmıştır. Afedersiniz. –

+2

Doğru çözüm, 'request.get_host() ' – Dorian

4

os.environ.get('HOSTNAME') Eğer tam bir locname alır (örn, bu bir görünüm içindedir) bir istek varsa

import socket 

try: 
    HOSTNAME = socket.gethostname() 
except: 
    HOSTNAME = 'localhost' 
3

Sadece @Tobu's answer'a ekleyin. Eğer bir istek nesnesi varsa ve siz protokolü (yani http/https) bilmek istiyorum, bunu yapabilirsiniz:

if request.is_secure(): 
    protocol = 'https' 
else: 
    protocol = 'http' 

True döner is_secure() Çünkü istek HTTPS ile yaptıysanız.

+6

gibi görünüyor. [Request.scheme]' yi kullanamazdınız (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –

+2

@RyneEverett teşekkürler. bilmiyordum (facepalm). – azalea