提问人:kod 提问时间:11/17/2022 更新时间:11/17/2022 访问量:62
是否有最新的 Django 地理定位模块可以为我提供使用 IP 的国家/地区?
Is there an up to date Django geolocation module that can give me countries using IP?
问:
有没有像插入代码并进行地理定位这样简单的事情?我只想要国家/地区,以便我的网站可以切换到适当的语言。
似乎我发现的那些要么已被弃用,要么少于 10 个用户,要么是付费/试用版。
答:
0赞
Egor Wexler
11/17/2022
#1
最近遇到了这个问题 - 确实只有付费选项。但是,有一个几乎免费的解决方案是为此使用 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
评论