Просмотр счетчика с использованием IP-адреса в приложении Django
Я работаю над приложением Django и хочу знать, сколько людей его используют, поэтому я решил добавить счетчик просмотров на страницу. Я создал счетчик просмотров (посмотрел несколько уроков), но он не работает. Я не знаю, где проблема. Вот код:
models.py:
class User(models.Model):
user=models.TextField(default=None)
def __str__(self):
return self-user
admin.py:
admin.site.register(User)
Есть проблема с файлом views.py. Там говорится, что "return можно использовать только внутри функции". Я знаю это, но что я могу сделать, чтобы это работало?
def get_ip(request):
address=request.META.get('HTTP_X_FORWARDED_FOR')
if address:
ip=address.split(',')[-1].strip()
else:
ip=request.META.get('REMOTE_ADDR')
return ip
ip=get_ip(request)
u=User(user=ip)
print(ip)
result=User.objects.filter(Q(user__icontains=ip))
if len(result)==1:
print("user exist")
elif len(result)>1:
print("user exist more...")
else:
u.save()
print("user is unique")
count=User.objects.all().count()
print("total user is", count)
return render(request, 'index.html', {'count':count})
index.html:
{% load static %}
<html>
<head>
<title>Hello World Django App</title>
</head>
<h1>Hello World!</h1>
<div>Total visits: {{count}} </div>
</html>
Ваша ошибка очевидна. У вас есть два оператора возврата, которые не являются условными в одной функции.
Ваша ошибка:
return ip
Уберите это.
Я заметил, что вы хотите сделать две разные функции, потому что вы ошибочно вызываете вашу текущую функцию для возврата ip.
Нужно сделать функцию view и в ней вызвать get_ip. Удалите все из ip=get_ip вниз. Поместите их в функцию get view.
Новая функция - это то, что вы должны поместить в ваш файл urls