Вам нужно будет сделать это с помощью пользовательского промежуточного программного обеспечения.
В вашем методе промежуточного программного обеспечения process_request()
у вас будет доступ к объекту запроса, чтобы вы могли сделать что-то вроде следующего:
session_key = request.session.session_key
ip_address = request.META.get('REMOTE_ADDR', '')
Теперь вы знаете IP-адрес, поэтому проверьте созданную вами модель, которая (примерно) будет выглядеть следующим образом:
class SessionIPS(models.Model):
session = models.ForeignKey(Session)
IP = models.CharField(max_length=20)
Таким образом, когда сеанс создается или удаляется, вы соответствующим образом модифицируете таблицу ip своего сеанса, а при поступлении запроса убедитесь, что IP-адрес не используется для другого сеанса. Если если есть, то верните Http404 (или что-то подобное) из промежуточного программного обеспечения.
Подключаемое приложение, которое может показать вам гораздо больше деталей (и даже включает IP-адрес в своей собственной модели): django-tracking .