Просмотр счетчика с использованием 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

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