Ответ 1
request.build_absolute_uri('/')
или вы можете попробовать
import socket
socket.gethostbyname(socket.gethostname())
Когда я запускаю сервер, он показывает мне сообщение http://127.0.0.1:8000/. Я хочу получить url в коде. У меня нет объекта запроса.
request.build_absolute_uri('/')
или вы можете попробовать
import socket
socket.gethostbyname(socket.gethostname())
С Django docs здесь, вы можете использовать:
domain = request.get_host()
# domain = 'localhost:8000'
Если вы хотите точно знать IP-адрес, с которого запущен сервер разработки, вы можете использовать sys.argv
для этого. Сервер разработки Django использует один и тот же трюк внутри для перезапуска сервера разработки с теми же аргументами
Запустите сервер разработки:
manage.py runserver 127.0.0.1:8000
Получить адрес в коде:
if settings.DEBUG:
import sys
print sys.argv[-1]
Отпечатает 127.0.0.1:8000
import socket
host = socket.gethostname()
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()