Как сохранить 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) в базе данных (которая, как я предполагаю, есть в вашем проекте) и при каждом логине проверка по этой таблице, другое решение, которое мне нравится меньше, так как оно не масштабируемо и подходит только для вашего случая, это сохранить последний логин в файл и читать оттуда каждый раз, когда пользователь входит