3 回答

TA贡献1796条经验 获得超10个赞
REMOTE_ADDR的属性request.META。检查此帖子以获取有关远程地址的完整解决方案。
注册时,您可以执行以下操作:
addr = request.META.get('REMOTE_ADDR', None)
并保存此IP地址。
现在,您可以使用以下方式获取城市GeoIP:
from django.contrib.gis.utils import GeoIP
g = GeoIP()
addr = request.META.get('REMOTE_ADDR', None) #Or retrive this from the userprofile you saved while registering
city = 'New York' #Or any default city
if addr:
city = g.city(addr)['city']

TA贡献1843条经验 获得超7个赞
不是以任何可靠的方式,或者至少不是在Django中。问题在于用户IP通常是动态的,因此地址每两天更改一次。同样,一些ISP很快将开始为大量用户使用单个IP(忘记了这个称呼),因为它们用尽了IPv4 IP地址...换句话说,该ISP中的所有用户在整个状态甚至国家/地区将只有一个IP地址。
因此,使用IP是不可靠的。您可能会以合理的准确性弄清楚用户所在的国家或地区,但是我的建议是不要将IP用于记录和许可目的(例如,阻止垃圾邮件IP)。
但是,如果您需要用户位置,则可以使用HTML5位置API,因为它可以利用其他方法(例如在电话中使用GPS传感器)来获取更准确的位置,因此可以更好地拍摄。
添加回答
举报