Django记录站点访问次数
类别: 入门到放弃
标签:
Django
日期: 2024-02-23 | 作者:admin |
浏览: 74
想着在站点里统计下不同IP的访问总数,查了下相关资料,Django的可以这么操作。
一、新增访问信息模型
# 站点访问信息
class VisitInfo(models.Model):
visit_time = models.DateTimeField('访问时间', default=timezone.now)
ip = models.CharField('访问IP', max_length=20)
browser = models.CharField('浏览器', max_length=200)
class Meta:
verbose_name = '站点访问信息'
verbose_name_plural = verbose_name
ordering = ('visit_time',)
def __str__(self):
return self.ip
二、访问记录函数
# 记录访问IP
def visit_count(request):
browser = request.META.get('HTTP_USER_AGENT', 'unknown')
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
# 2小时内重复IP不统计
time_interval = timezone.now() - timedelta(hours=2)
info = VisitInfo.objects.filter(ip=ip).filter(visit_time__gte=time_interval)
if info:
pass
else:
VisitInfo.objects.create(ip=ip, visit_time=timezone.now(), browser=browser)
三、调用及显示
# 站点首页
def index(request):
# 调用访问IP记录
visit_count(request)
# 总访问数
count= Visit.objects.count()
return render(request, 'index.html', {'title': '首页', 'count': count})