我正在使用django-countries从CountryField获取一个标志并且它可以工作。但是,有些用户没有在他们的个人资料上设置国家/地区,但我仍然需要显示一个标志。我的想法是从知识产权中获取一个国家,然后从该国或类似的国家获得一面旗帜。
不幸的是,视图中没有发生这种情况,因此我没有收到请求。我可以在模板中设置IP,然后在后端检查是否找不到标志(如果没有提供国家/地区),然后以某种方式使用我从模板获得的IP来获取标志。有可能吗?如果需要,GeoDjango已经包含在项目中。
也许有一种完全不同的做法,但我是Django的新手并且还在学习。感谢。
答案 0 :(得分:0)
首先,您应该在视图中查找国家/地区,而不是模板。视图应该执行所有数据库工作和业务逻辑,模板只是以尽可能最好的方式显示视图提取的内容。如果您想将其应用于每个页面,请考虑使用上下文处理器。
关于让国家/地区脱离知识产权问题,这个问题解释了它:Django, Retrieve IP location
答案 1 :(得分:0)
如果用户没有设置他们的国家,我个人会设置一个通用标志作为后备(django标志?),并且公平地说,如果用户不这样做,必须有一个理由。或者您可以简单地将该国家/地区字段设为必填字段。
假设那个国家的人根据他们现有的IP而言听起来并不合适。 想象一下,如果您通过VPN远程工作或在代理服务器后面工作......您就会明白这一点。
如果您只想将人们重定向到基于IP的子域(不同语言)站点,那就更有意义了。