Как сохранить IP-адрес в django и проверить сохраненное значение

Мне нужно сделать упражнение: сохранить IP адрес администратора и вывести оповещение, если этот адрес изменится. Я пробовал много раз, даже с промежуточным ПО, но ничего не получается.

#models.py
from django.db import models
from django.utils import timezone
from django.conf import settings
from django.contrib.auth.models import User
from smapp.utils import sendTransaction
from django.shortcuts import get_object_or_404
import hashlib

def random_number():
    return User.objects.make_random_password(length=10,allowed_chars='123456789')

# Create your models here.
class Lot(models.Model):
    author=models.ForeignKey(User,on_delete=models.CASCADE)
    title=models.CharField(max_length=100)
    text=models.TextField()
    created_date=models.DateTimeField(default=timezone.now)
    tracking_code=models.CharField(max_length=10,default=random_number)
    hash=models.CharField(max_length=64,default=None,blank=True)
    txId=models.CharField(max_length=66,default=None,blank=True)

    def writeOnChain(self):
        self.hash = hashlib.sha256(self.text.encode('utf-8')).hexdigest()
        self.txId = sendTransaction(self.hash)
        self.save()

    def publish(self):
        self.save()

    def __str__(self):
        if not self.hash:
            return str(self.writeOnChain())
        else:
            return self.title

class ip(models.Model):
    ip_address = models.GenericIPAddressField()

И далее мое мнение:

from django.shortcuts import render,HttpResponse
from .models import Lot
from .models import ip


# Create your views here.
def client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ipaddress = x_forwarded_for.split(',')[-1].strip()
    else:
        ipaddress = request.META.get('REMOTE_ADDR')
    get_ip= ip()
    get_ip.ip_address= ipaddress
    get_ip.save()
    return ipaddress

def home_page(request):
    return render(request, 'smapp/home_page.html', {})

def lot_details(request):
    if request.method == "POST":
        searched = request.POST['searched']
        tracks=Lot.objects.filter(tracking_code__contains=searched)
        return render(request, 'smapp/lot_details.html', {'searched': searched,'tracks':tracks})
    else:
        return render(request, 'smapp/lot_details.html', {})

Мой вопрос: есть ли способ сделать это? get_ip.save() где сохранить мой ip адрес и где я могу его проверить? Моя проблема не в том, чтобы найти ip адрес, а в том, как его сохранить и как проверить, изменился ли он по сравнению с предыдущим. Спасибо

Я не уверен, что полностью понял ваши вопросы, но я постараюсь помочь.

Когда вы говорите Admin, вы имеете в виду пользователя, которого вы определили как суперпользователя?

На вопрос о том, как проверить IP, здесь есть два сценария:

1.Изменился ли IP во время сессии, здесь решение довольно простое, создайте переменную и сохраните IP, если IP изменился, установите предупреждение

2.Изменился ли IP с последней сессии, предпочтительным решением является создание таблицы логинов (что всегда является хорошей практикой при создании webapp) в базе данных (которая, как я предполагаю, есть в вашем проекте) и при каждом логине проверка по этой таблице, другое решение, которое мне нравится меньше, так как оно не масштабируемо и подходит только для вашего случая, это сохранить последний логин в файл и читать оттуда каждый раз, когда пользователь входит

Вернуться на верх