Задать вопрос
@fringer

Как с помощью Django определить расстояние между двумя ip?

Не могу понять, как лучше реализовать этот механизм.
Только начал изучать DRF.
Сначала думал сделать через яндекс локатор, но пока не понял как отправить туда запрос, и получить от них. Формат запросов JSON.

Может быть есть хороший способ?
  • Вопрос задан
  • 145 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@fringer Автор вопроса
Нашел решение через внешний API
Тут способ получения координат, остальное мелочи.
Вдруг кому понадобится, как мне.

import urllib, json

PRIVATE_IPS_PREFIX = ('10.', '172.', '192.',)


def get_client_ip(request):
    remote_address = request.META.get('REMOTE_ADDR')
    ip = remote_address
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        proxies = x_forwarded_for.split(',')
        while (len(proxies) > 0 and
               proxies[0].startswith(PRIVATE_IPS_PREFIX)):
            proxies.pop(0)
        if len(proxies) > 0:
            ip = proxies[0]
    return ip


def get_res(request):
    client_ip= get_client_ip(request)
    if client_ip is None:
        client_ip = "0.0.0.0"
    ip_address = '106.220.90.88'
    try:
        url = 'https://api.ipfind.com/?ip=' + client_ip
        response = urllib.request.urlopen(url)
        data1 = json.loads(response.read())
        longitude = data1["longitude"]
        latitude = data1["latitude"]
    except:
        url = 'https://api.ipfind.com/?ip=' + ip_address
        response = urllib.request.urlopen(url)
        data1 = json.loads(response.read())
        longitude = data1["longitude"]
        latitude = data1["latitude"]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы