Как получить IP-адрес от представлений или промежуточного программного обеспечения для моделей? - PullRequest
0 голосов
/ 04 апреля 2019

Так как несколько часов назад я столкнулся с основной проблемой, я решил задать вопрос после того, как попытался сделать много примеров, но у меня все еще есть ошибка.

мой ответ - я хочу поставитьСтрана пользователя в соответствии с его 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) 
...