0

我正在使用 django-countries 从 CountryField 获取标志并且它有效。但是,有些用户的个人资料中没有设置国家/地区,但我仍然必须显示标志。我的想法是从 IP 获得一个国家,然后从该国家获得一面旗帜或任何类似的东西。

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

也许有一种完全不同的方法可以做到这一点,但我是 Django 新手,还在学习。谢谢。

4

2 回答 2

0

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

关于从IP获取国家,这个问题解释了它:Django, Retrieve IP location

于 2014-10-01T13:41:07.073 回答
0

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

假设那个国家的人基于他们现有的 IP 听起来是不对的。想象一下,如果您通过 VPN 或在代理服务器后面远程工作……您就会明白。

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

于 2014-10-01T13:54:52.573 回答