Как отправить IP-адрес пользователя из ListView в шаблон?

Я работаю над проектом блога, используя django.Мне нужно отправить IP адрес пользователя из моего класса PostListView (который наследует класс ListView) в шаблон, как я могу это сделать ?????

Это мой signals.py

from django.contrib.auth.signals import user_logged_in
from django.contrib.auth.models import User
from django.dispatch import receiver

@receiver(user_logged_in,sender=User)
def login_success(sender,request,user,**kwargs):
    print("____________________________")
    print("log in")
    ip = request.META.get('REMOTE_ADDR')
    print(" ip: ",ip)
    request.session['ip'] = ip

Я думаю, что мне нужно внести изменения в views.py, так что мне нужно добавить/изменить....

views.py

class PostListView(ListView):
    model = Post
    template_name = 'blog/home.html' 
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 5
    
    def get_context_data(self,request, **kwargs):
        ip = request.session.get('ip',0)
        context = super().get_context_data(**kwargs)
        context['ip'] = ip
        return context

Шаблон

<p>ip{{ip}}</p>

Я получил ошибку из файла views.py

this is

get_context_data вызывается не с помощью request, это атрибут представления. Таким образом, вы можете обратиться к запросу с помощью self.request:

class PostListView(ListView):
    model = Post
    template_name = 'blog/home.html' 
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 5
    
    #                   no request ↓
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['ip'] = self.request.session.get('ip', 0)
        return context
Вернуться на верх