Как получить URL-адрес работающего сервера

Когда я запускаю сервер, он показывает мне сообщение http://127.0.0.1:8000/. Я хочу получить url в коде. У меня нет объекта запроса.

Ответы

Ответ 1

request.build_absolute_uri('/')

или вы можете попробовать

import socket
socket.gethostbyname(socket.gethostname())

Ответ 2

С Django docs здесь, вы можете использовать:

domain = request.get_host()
# domain = 'localhost:8000'

Ответ 3

Если вы хотите точно знать 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

Ответ 4

import socket
host = socket.gethostname()

Ответ 5

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()