Так как несколько часов назад я столкнулся с основной проблемой, я решил задать вопрос после того, как попытался сделать много примеров, но у меня все еще есть ошибка.
мой ответ - я хочу поставитьСтрана пользователя в соответствии с его IP-адресом для регистрации или других запросов.
Я имею в виду, что IP-адрес будет получен из функции просмотра или из моего файла промежуточного программного обеспечения.
Я хочу сделать такно я хочу получить IP-адрес из моего представления или моего промежуточного ПО в том виде, в котором я его сказал.
Это моя функция для получения IP-адреса из моего представления или из моего файла промежуточного программного обеспечения:
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
Итак, как только я получил IP-адрес, скажем, на мой взгляд, как я могу получить этот IP-адрес для моих моделей, чтобы выполнить этот процесс ниже?
это то, что я ожидал:
ip = '0.0.0.0'
readerone = GeoIP2()
readerone.country_name(ip)
visitor_info = readerone.city(ip)
dma_code = visitor_info['dma_code']
city = visitor_info['city']
continent_code = visitor_info['continent_code']
continent_name = visitor_info['continent_name']
country_code = visitor_info['country_code']
country = visitor_info['country_name']
latitude = visitor_info['latitude']
longitude = visitor_info['longitude']
postal_code = visitor_info['postal_code']
region = visitor_info['region']
time_zone = visitor_info['time_zone']
current_country = country
Поэтому, когда я получил страну по IP-адресу, я могу передать ее в мою страну по умолчанию, например, в мои модели:
class GetSomeInfoByIp(models.Model):
city = models.CharField(max_length=120)
pub_date = models.DateTimeField('date published', null=True,
blank=True)
ip_address = models.GenericIPAddressField()
country = models.CharField(max_length=120,
choices=COUNTRIES, default=current_country)
state_or_department = models.CharField(max_length=120)
postal_code = models.CharField(max_length=120)