在 Django 应用程序中使用 IP 地址查看计数器

View counter using IP address in Django app

我正在开发 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 语句在单个函数中不是条件语句。

你的错误是:

return ip

删除那个。

我注意到,您的意思是创建两个不同的函数,因为您错误地将当前函数调用到 return 一个 ip。

你应该创建一个视图函数,然后在其中调用 get_ip。 删除 ip=get_ip 下的所有内容。 将它们放在获取视图函数中。

新函数是您应该放入 urls 文件的内容