【问题标题】:Python/Django get country flag from IPPython/Django 从 IP 获取国旗
【发布时间】:2014-11-26 08:36:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django geodjango django-countries


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。这可能会给我一个国家名称并解决第一部分。不过,我仍然需要拿到国旗。我会尝试看看 django-countries 是否有一些工具(给我一个没有 CountryFiled 的标志,只是来自一个国家名称)。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多