Существует ли современный модуль геолокации 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