2014-10-01 108 views
0

我使用Django的国家从CountryField获得国旗,它的工作原理。但是,有些用户的个人资料中没有设置国家/地区,但我仍然需要显示标志。我的想法是从IP获得一个国家,然后从该国或类似的国家获得一面旗帜。Python/Django从IP获得国家国旗

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

也许有这样做的完全不同的方式,但我是新的Django,仍然在学习。谢谢。

回答

0

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

关于从IP获得国家,这个问题的解释是:Django, Retrieve IP location

+0

谢谢。这可能会让我成为一个国家名称并解决第一部分。不过,我仍然需要获得国旗。我会试着去看看django-countries是否有一些工具可以用来为我提供一个没有CountryFiled的国旗,只需要一个国家名称。 – dnmh 2014-10-01 13:49:18

0

个人而言,我会设置一个通用的标志作为备用(Django的标志吧?),如果用户没有设置自己的国家,而且是公平的如果用户不这样做,一定有一个原因。或者,您可以简单地将该国家/地区字段设为必填

并假设在该国根据其现有知识产权的人听起来不正确。 想象一下,如果您通过VPN或代理服务器进行远程工作......您就明白了。

如果您只是希望将人员重定向到基于IP的子域(不同语言)的站点,这会更有意义。