2012-04-12 13 views

Odpowiedz

16
request.build_absolute_uri('/') 

lub można spróbować

import socket 
socket.gethostbyname(socket.gethostname()) 
+0

daje mi mój komputer IP. nie 127.0.0.1 –

2

Jeśli chcesz dokładnie wiedzieć, adres IP serwera rozwój rozpoczyna się, można użyć sys.argv do tego. Serwer deweloperski Django wykorzystuje tę samą sztuczkę wewnętrznie, aby ponownie uruchomić serwer deweloperski z tymi samymi argumentami

serwer rozwój Start:

manage.py runserver 127.0.0.1:8000 

adres dostać się w kodzie:

if settings.DEBUG: 
    import sys 
    print sys.argv[-1] 

Drukuje 127.0.0.1:8000

+0

ładny, myślałem, że to powinno być możliwe, nie można znaleźć polecenia restartu :-) –

+0

Mechanizm automatycznego ładowania jest w django.utils.autoreload. W metodzie restart_with_reloader przyjmuje ona argumenty z 'sys.argv' – Wesley

8

Z dokumentami Django here, można użyć:

domain = request.get_host() 
# domain = 'localhost:8000' 
0
import socket 
host = socket.gethostname() 
0
import re 
import subprocess 


def get_ip_machine(): 
    process = subprocess.Popen(['ifconfig'], stdout=subprocess.PIPE) 

    ip_regex = re.compile('(((1?[0-9]{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((1?[0-9]{1,2})|(2[0-4]\d)|(25[0-5]))') 

    return ip_regex.search(process.stdout.read(), re.MULTILINE).group() 
Powiązane problemy