我正在使用django-countries从CountryField获取一个旗帜,它起作用了。然而,一些用户的个人资料中没有设置国家,但我仍然必须显示一面旗帜。我的想法是从IP得到一个国家,然后从这个国家得到一个旗帜或任何类似的东西。
不幸的是,这不会在视图中发生,所以我没有请求。我可以在模板中设置IP,然后在后台检查是否没有找到标志(如果没有提供国家/地区),然后以某种方式使用我从模板中获得的IP来获得标志。这样的事情有可能发生吗?如果需要,GeoDjango已经包含在项目中。
也许有一种完全不同的方式来做这件事,但我是Django的新手,还在学习。谢谢。
发布于 2014-10-01 21:41:07
首先,您应该在视图中查找国家/地区,而不是模板。视图应该完成所有的数据库工作和业务逻辑,模板只是以最好的方式显示视图获取的内容。如果你想把它应用到,比如说,每一个页面上,那么考虑使用上下文处理器。
关于从IP获取国家,这个问题解释了它:Django, Retrieve IP location
发布于 2014-10-01 21:54:53
就我个人而言,我会设置一个通用标志作为后备(也许是django标志?)如果用户没有设置他们国家,公平地说,如果用户没有设置,必须有一个原因。或者你可以简单地将国家字段设为必填项。
假设那个国家的人基于他们现有的IP地址听起来是不对的。想象一下,如果您正在通过VPN远程工作或在代理服务器后面工作...你明白了吧。
如果您只是想将用户重定向到基于IP子域(不同语言)站点,这会更有意义。
https://stackoverflow.com/questions/26142468
复制相似问题