Задать вопрос
@Oyaseo
beginner programmist

Как получить ip юзера в проекте Django?

Добрый вечер, делаю не большой проект, нужно сохранить ip юзера, Проект раздаётся по 127.0.0.1 и в nginx перенаправляется уже на адрес сервера. Использовал инфу из документации Django.
ip = request.META.get('REMOTE_ADDR', '') or request.META.get('HTTP_X_FORWARDED_FOR', '')  
user.user_ip=ip
user.save()

В итоге получаю в поле User.user_ip - 127.0.0.1
Что не так подскажите пожалуйста?
  • Вопрос задан
  • 4693 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
un1t
@un1t
В nginx пробрасывай ip клиента:
proxy_set_header X-Real-IP $remote_addr;
или
uwsgi_param X-Real-IP $remote_addr;

В Джанге получай:
request.META['HTTP_X_REAL_IP']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
reli
@reli
Python-devel
Работает и без nginx:
class UpdateIPv4UserMeta(object):
    def process_view(self, request, view_func, view_args, view_kwargs):
        user = request.user
        today_30min = timezone.now() + timezone.timedelta(minutes=30)
        if user.is_authenticated():
            if user.last_login > today_30min:
                User.objects.filter(id=request.user.id).\
                    update(latest_ip=request.META['REMOTE_ADDR'])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы