项目上线后,作为站长肯定迫不及待的想知道页面访问量多少,哪些页面更受用户喜爱,访问用户终端类型占比多少?用户在哪个时间段访问较多?对于这些流量的分析,主流的解决方案主要有①分析nginx的access.log日志②使用第三方统计平台(如百度统计、友盟)

一、注册开通百度统计功能

  1. 打开链接,点击右上角注册,选择百度统计-站长版

    image.png

  2. 填写表单,完成注册

    image.png

  3. 登录账号后,点击管理——网站列表——新增网站,填写网站详细信息

    image.png

二、html页面添加统计代码

  1. 在管理——代码管理——代码获取页,点击获取统计代码

    image.png

  2. 在项目的base页面,添加粘贴相关代码

    image.png

  3. 然后点击代码安装检查,验证是否正确安装

    image.png

  • 如果已安装代码,但百度统计提示代码未安装,检查页面的referrer策略,设置为no-referrer-when-downgrade

三、项目后台添加相关代码

1. 在setting.py文件中定义变量,便于后期更换token等信息

# 百度统计token
BAIDU_USERNAME = '*****'
BAIDU_PASSWORD = '*****'
BAIDU_ID = '*****'
BAIDU_TOKEN = '*****'

BAIDU_ID可以查看地址栏siteId的值 image.png

2. 新建baidu_tongji.py文件,专门处理百度统计相关业务逻辑

import json
import requests
from django.utils import timezone
from myblog.settings import BAIDU_USERNAME, BAIDU_PASSWORD, BAIDU_TOKEN, BAIDU_ID, BAIDU_START_DATE

# 百度统计api
class BaiduApi:
    def __init__(self):
        self.url = 'https://api.baidu.com/json/tongji/v1/ReportService/getData'
        self.username = BAIDU_USERNAME
        self.password = BAIDU_PASSWORD
        self.token = BAIDU_TOKEN
        self.id = BAIDU_ID

    def countAll(self):
        now_date = timezone.now()
        end_date = now_date.strftime('%Y%m%d')
        data = {
            "header": {
                "username": self.username,
                "password": self.password,
                "token": self.token,
                "account_type": 1
            },
            "body": {
                "site_id": self.id,
                "start_date": BAIDU_START_DATE,
                "end_date": end_date,
                "metrics": "pv_count,visitor_count,ip_count",
                "method": "trend/time/a",
                "area": ""
            }
        }
        r = requests.post(self.url, data=json.dumps(data))
        result = json.loads(r.text)
        pv = result["body"]["data"][0]["result"]["pageSum"][0][0]
        uv = result["body"]["data"][0]["result"]["pageSum"][0][1]
        ip = result["body"]["data"][0]["result"]["pageSum"][0][2]
        count_dict = {}
        count_dict['pv'] = pv
        count_dict['uv'] = uv
        count_dict['ip'] = ip
        return count_dict
  • 这里只列出了pv、uv、ip统计代码,其他信息可以参考开发者手册

3. views视图函数编写调用部分的逻辑代码

    # 运行时间
    now_data = str(timezone.now().strftime('%Y-%m-%d'))
    d1 = datetime.datetime.strptime(BAIDU_START_DATE, '%Y%m%d')
    d2 = datetime.datetime.strptime(now_data, '%Y-%m-%d')
    day_count = (d2 - d1).days
    # 流量统计
    api = BaiduApi()
    count = api.countAll()
    all_pv = count['pv']
    all_uv = count['uv']
    all_ip = count['ip']

4. html文件加载数据

    <div class="about-me">
      <div>
        <i class="fas fa-business-time"></i>
        <span>运行时间:{{ aside_dict.day_count }}天</span>
      </div>
      <div>
        <i class="fas fa-book-reader"></i>
        <span>总访问量:{{ aside_dict.all_pv }}</span>
      </div>
      <div>
        <i class="fas fa-user-plus"></i>
        <span>访问人数:{{ aside_dict.all_uv }}</span>
      </div>
      <div>
        <i class="fas fa-chalkboard-teacher"></i>
        <span>访问IP:{{ aside_dict.all_ip }}</span>
      </div>
    </div>

四、最终效果展示

1. 侧边栏统计pv、uv

2. 网站后台流量统计

image.png

0 子项 · 2 次浏览 · 2026-09-24