Существует ли современный модуль геолокации Django, который может предоставить мне страны, используя IP?

Есть ли что-то такое же простое, как вставить код и перейти к геолокации? Мне нужны только страны, чтобы мой сайт мог переключаться на соответствующий язык.

Похоже, что те, которые я нашел, либо устарели, либо имеют менее 10 пользователей, либо являются платными/пробными версиями.

Недавно столкнулся с этой проблемой - действительно, существуют только платные варианты. Однако есть почти бесплатное решение - использовать для этого функции Google Cloud.

https://cloud.google.com/functions/docs/create-deploy-gcloud

Вот код функции, которую вы хотите реализовать:

const cors = require('cors')

const corsOptions = {
  origin: true
}

function _geolocation(req, res) {
  const data = {
    country: req.headers["x-appengine-country"],
    region: req.headers["x-appengine-region"],
    city: req.headers["x-appengine-city"],
    cityLatLong: req.headers["x-appengine-citylatlong"],
    userIP: req.headers["x-appengine-user-ip"],
  }

  res.json(data)
};

exports.geolocation = (req, res) => {
  const corsHandler = cors(corsOptions);

  return corsHandler(req, res, function() {
    return _geolocation(req, res);
  });
};

Затем в JS-коде вашей веб-страницы вы вызываете эту функцию и получаете страну из data.country.

Однако, если вам нужен выбор языка - я рекомендую использовать автовыбор языка, включенного в Django. Добавьте в ваши промежуточные модули:

MIDDLEWARE = [
    ...
    'django.middleware.locale.LocaleMiddleware',
]

Определяет язык пользователя на основе настроек браузера. Дополнительная информация: https://docs.djangoproject.com/en/4.1/topics/i18n/translation

Вернуться на верх