如何解决如何计算django网站的访客数量?
我正在开发Django Web应用程序,我需要计算页面访问者的数量,这是我的代码,该代码将每次访问主页都视为新访问,尽管有会话。
models.py
from django.db import models
class PageView(models.Model):
hits=models.IntegerField(default=0)
views.py
from django.shortcuts import render
from django.views.generic.base import TemplateView
from datetime import datetime
from .models import PageView
def index(request):
if (PageView.objects.count() <= 0):
x = PageView.objects.create()
x.save()
else:
x = PageView.objects.all()[0]
x.hits = x.hits + 1
x.save()
context = {'page': x.hits}
return render(request,'pages/index.html',context=context)
HTML
<h4 >You are {{page}}th visitor</h4>
解决方法
您没有在代码中的任何地方检查会话。一个简单的实现可以是:
jsondata = {
ask: [350.5,346,341,336,331],bid: [346,331,326.5],};
const asks = jsondata["ask"];
const bids = jsondata["bid"];
const table = document.getElementById("apps");
for (let i = 0; i < Math.min(asks.length,bids.length); i++) {
var tr = document.createElement("tr"); // New row
// Add the ask:
var td = document.createElement("td");
var txt = document.createTextNode(asks[i]);
td.appendChild(txt);
tr.appendChild(td);
// Add the bid:
td = document.createElement("td");
txt = document.createTextNode(bids[i]);
td.appendChild(txt);
tr.appendChild(td);
table.appendChild(tr); // Add this row to the table
}
,
您需要具有page_name以及它在 PageView 模型中的数量,如下所示:
from django.db import models
class PageView(models.Model):
page = models.CharField(max_length=50,blank=False)
hits = models.IntegerField(default=0)
现在,在views.py
中,您需要首先获取当前计数器值,然后对其进行更新。
在 views.py 中 根据OP对答案的评论进行编辑:
from django.shortcuts import render
from django.views.generic.base import TemplateView
from datetime import datetime
from .models import PageView
def index(request):
current_page_count = PageView.objects.filter(page=page_name).hits
context = {'page': current_page_count}
if not request.session.get('counted'):
page_view = PageView()
page_view.hit = current_page_count + 1
page_view.save()
context = {'page': page_view.hit}
request.session['counted'] = True
return render(request,'pages/index.html',context=context)
一旦计数,就需要更新会话以指示该会话的page_view已被计数。现在,您可以基于此决定是否更新计数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。