Python/Django получают флаг страны от IP
Я использую django-страны, чтобы получить флаг от CountryField, и это работает. Тем не менее, у некоторых пользователей не указана страна в их профилях, но мне все равно нужно отображать флаг. Моя идея состояла в том, чтобы получить страну от ИС, а затем получить флаг от страны или что-то подобное.
К сожалению, это не происходит в представлении, поэтому у меня нет запроса. Я могу установить IP-адрес в шаблоне, а затем в бэкэнде проверить, не был ли найден флаг (если страна не указана), а затем каким-то образом использовать IP-адрес, полученный из шаблона, для получения флага. Возможно ли что-то подобное? При необходимости GeoDjango уже включен в проект.
Возможно, есть совершенно другой способ сделать это, но я новичок в Django и все еще учусь. Благодарю.
2 ответа
Лично я бы установил универсальный флаг как запасной вариант (возможно, флаг django?), Если пользователь не устанавливает свою страну, и, если честно, должна быть причина, если он этого не делает. Или вы можете просто сделать это поле страны обязательным.
И предположить, что этот человек в этой стране, основываясь на их существующей интеллектуальной собственности, звучит неправильно. Представьте, если вы работаете удаленно через VPN или за прокси-сервером... вы поняли идею.
Это имеет больше смысла, если вы просто хотите перенаправить людей на сайт поддомена (на другом языке) на основе IP.
Во-первых, вы должны искать страну в представлении, а не в шаблоне. Предполагается, что представление выполняет всю работу с БД и бизнес-логику, шаблон просто отображает наилучшим образом, что выбирает представление. Если вы хотите применить его, скажем, к каждой странице, подумайте об использовании контекстного процессора.
Относительно получения страны от IP, этот вопрос объясняет это: Django, Retrieve IP location