Python / Django从IP获得国家标志

时间:2014-10-01 13:24:00

标签: python django geodjango django-countries

我正在使用django-countries从CountryField获取一个标志并且它可以工作。但是,有些用户没有在他们的个人资料上设置国家/地区,但我仍然需要显示一个标志。我的想法是从知识产权中获取一个国家,然后从该国或类似的国家获得一面旗帜。

不幸的是,视图中没有发生这种情况,因此我没有收到请求。我可以在模板中设置IP,然后在后端检查是否找不到标志(如果没有提供国家/地区),然后以某种方式使用我从模板获得的IP来获取标志。有可能吗?如果需要,GeoDjango已经包含在项目中。

也许有一种完全不同的做法,但我是Django的新手并且还在学习。感谢。

2 个答案:

答案 0 :(得分:0)

首先,您应该在视图中查找国家/地区,而不是模板。视图应该执行所有数据库工作和业务逻辑,模板只是以尽可能最好的方式显示视图提取的内容。如果您想将其应用于每个页面,请考虑使用上下文处理器。

关于让国家/地区脱离知识产权问题,这个问题解释了它:Django, Retrieve IP location

答案 1 :(得分:0)

如果用户没有设置他们的国家,我个人会设置一个通用标志作为后备(django标志?),并且公平地说,如果用户不这样做,必须有一个理由。或者您可以简单地将该国家/地区字段设为必填字段。

假设那个国家的人根据他们现有的IP而言听起来并不合适。 想象一下,如果您通过VPN远程工作或在代理服务器后面工作......您就会明白这一点。

如果您只想将人们重定向到基于IP的子域(不同语言)站点,那就更有意义了。