Как отправить 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
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