Django訪问量和页面PV数统计
http://blog.csdn.net/pipisorry/article/details/47396311
以下是在模板中做一个简单的页面PV数统计、model阅读量统计、用户訪问量统计的方法
简单的模板页面计数的实现
模板中设置:
<li>您是第{{count}}个訪问本站的朋友</li>
<li>訪问时间:{{time}}</li>
view.py中
def getTime():#获取当前时间
import time
return time.ctime() def getCount():#获取訪问次数
countfile = open('count.dat','a+')#以读写形式打开记录计数的文件
counttext = countfile.read()
try:
count = int(counttext)+1
except:
count = 1
countfile.seek(0)
countfile.truncate()#清空文件
countfile.write(str(count))#又一次写入新的訪问量
countfile.flush()
countfile.close()
return count def myHelloWorld(request):
time = getTime()
count = getCount()
para = {"count":count,"time":time}
...
这样每次訪问时都会调用myHelloWorld函数。读取count值并+1操作
http://blog.csdn.net/pipisorry/article/details/47396311
model对象的计数器实现
Django hit counter application that tracks the number of hits/views for chosen objects.
hit counter是用来计数model对象的訪问次数的。
安装django-hitcount:
pip install django-hitcount
Settings.py
Add django-hitcount to your INSTALLED_APPS, enableSESSION_SAVE_EVERY_REQUEST:
# settings.py
INSTALLED_APPS = (
...
'hitcount'
)
# needed for django-hitcount to function properly
SESSION_SAVE_EVERY_REQUEST = True
Urls.py
urls.py中增加
# urls.py
urlpatterns = patterns('',
...
url(r'hitcount/', include('hitcount.urls', namespace='hitcount')),
)
View the additional settings section for more information.
Template Magic
Django-hitcount comes packaged with a jQuery implementation that works out-of-the-box to record the to an object (be it a blog post, poll, etc). To use thejQuery
Hits
implementation you can either include the app’s script file (as the documentation below shows) or to copy-paste the script into your own jQuery code. Of course: you could also implement this without relying on jQuery.
在须要的模板最開始地方增加loading hitcount tags
{% load hitcount_tags %}
Recording a Hit
If you want to use the jQuery implementation in your project, you can add the Javascript file to your template like so:
{% load staticfiles %}
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="{% static 'hitcount/hitcount-jquery.js' %}"></script>
Then, on your object detail page (blog, page, poll, etc) you inject the needed javascript variables:
# use default insertion method for hitcount-jquery.js:
{% insert_hit_count_js_variables for object %} # or you can use a template variable to inject as you see fit
{% get_hit_count_js_variables for object as hitcount %}
({ hitcount.ajax_url }}
{{ hitcount.pk }}
Displaying Hit Information
You can retrieve the number of hits for an object many different ways:
# Return total hits for an object:
{% get_hit_count for [object] %} # Get total hits for an object as a specified variable:
{% get_hit_count for [object] as [var] %} # Get total hits for an object over a certain time period:
{% get_hit_count for [object] within ["days=1,minutes=30"] %} # Get total hits for an object over a certain time period as a variable:
{% get_hit_count for [object] within ["days=1,minutes=30"] as [var] %}
http://blog.csdn.net/pipisorry/article/details/47396311
页面的用户訪问量统计
django-tracking keeps track of visitors to Django-powered Web sites. It also offers basic blacklisting capabilities.
安装django-tracking
pip install django-tracking
Note:会出错: no module named listeners
配置
First of all, you must add this project to your list of INSTALLED_APPS insettings.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
...
'tracking',
...
)
Run manage.py syncdb. This creates a few tables in your database that arenecessary for operation.
Depending on how you wish to use this application, you have a few options:
Visitor Tracking
Add tracking.middleware.VisitorTrackingMiddleware to yourMIDDLEWARE_CLASSES insettings.py. It must be underneath theAuthenticationMiddleware, so thatrequest.user exists.
Automatic Visitor Clean-Up
If you want to have Django automatically clean past visitor information outyour database, puttracking.middleware.VisitorCleanUpMiddleware in yourMIDDLEWARE_CLASSES.
IP Banning
Add tracking.middleware.BannedIPMiddleware to your MIDDLEWARE_CLASSESinsettings.py. I would recommend making this the very first item inMIDDLEWARE_CLASSES so your banned users do not have to drill through
anyother middleware before Django realizes they don't belong on your site.
Visitors on Page (template tag)
Make sure that django.core.context_processors.request is somewhere in yourTEMPLATE_CONTEXT_PROCESSORS tuple. This context processor makes therequest object accessible to your templates. This application uses therequest
object to determine what page the user is looking at in a templatetag.
Active Visitors Map
If you're interested in seeing where your visitors are at a given point intime, you might enjoy the active visitor map feature. Be sure you have added aline to your main URLconf, as follows:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
....
(r'^tracking/', include('tracking.urls')),
....
)
Next, set a couple of settings in your settings.py:
GOOGLE_MAPS_KEY: Your very own Google Maps API keyTRACKING_USE_GEOIP: set this toTrueif you want to see markers onthe mapGEOIP_PATH: set this to the absolute path on the filesystem of yourGeoIP.datorGeoIPCity.dator whatever file. It's usually somethinglike/usr/local/share/GeoIP.dator/usr/share/GeoIP/GeoIP.dat.GEOIP_CACHE_TYPE: The type of caching to use when dealing with GeoIP data:0: read database from filesystem, uses least memory.1: load database into memory, faster performance but uses morememory.2: check for updated database. If database has been updated, reloadfilehandle and/or memory cache.4: just cache the most frequently accessed index portion of thedatabase, resulting in faster lookups thanGEOIP_STANDARD, but lessmemory usage thanGEOIP_MEMORY_CACHE- useful for larger databasessuch as GeoIP Organization
and GeoIP City. Note, for GeoIP Country,Region and Netspeed databases,GEOIP_INDEX_CACHEis equivalent toGEOIP_MEMORY_CACHE.default
DEFAULT_TRACKING_TEMPLATE: The template to use when generating thevisitor map. Defaults totracking/visitor_map.html.
When that's done, you should be able to go to /tracking/map/ on your site(replacingtracking with whatever prefix you chose to use in your URLconf,obviously). The default template relies upon jQuery for its awesomeness, butyou're
free to use whatever you would like.
Usage
To display the number of active users there are in one of your templates, makesure you have{% load tracking_tags %} somewhere in your template and dosomething like this:
{% visitors_on_site as visitors %}
<p>
{{ visitors }} active user{{ visitors|pluralize }}
</p>
If you also want to show how many people are looking at the same page:
{% visitors_on_page as same_page %}
<p>
{{ same_page }} of {{ visitors }} active user{{ visitors|pluralize }}
{{ same_page|pluralize:"is,are" }} reading this page
</p>
If you don't want particular areas of your site to be tracked, you may define alist of prefixes in yoursettings.py using theNO_TRACKING_PREFIXES. Forexample, if you didn't want visits to the/family/ section of your
website,setNO_TRACKING_PREFIXES to['/family/'].
If you don't want to count certain user-agents, such as Yahoo!'s Slurp andGoogle's Googlebot, you may add keywords to your visitor tracking in yourDjango administration interface. Look for "Untracked User-Agents" and add akeyword that distinguishes a particular
user-agent. Any visitors with thekeyword in their user-agent string will not be tracked.
By default, active users include any visitors within the last 10 minutes. Ifyou would like to override that setting, just setTRACKING_TIMEOUT to howevermany minutes you want in yoursettings.py.
For automatic visitor clean-up, any records older than 24 hours are removed bydefault. If you would like to override that setting, setTRACKING_CLEANUP_TIMEOUT to however many hours you want in yoursettings.py.
[django-tracking] from:http://blog.csdn.net/pipisorry/article/details/47396311
Django訪问量和页面PV数统计的更多相关文章
- 利用httpclient和多线程刷訪问量代码
缘起于玩唱吧,由于唱吧好友少,訪问量低,又不想加什么亲友团之类的,主要是太麻烦了,于是我就琢磨唱吧的訪问机制,准备用java的httpclient库来进行刷訪问量,想到动态IP反复使用就想到了用多线程 ...
- Servlet 实现訪问量的统计小案例
今天学习了Servlet的基础知识,学习了一个统计訪问量的小案例,记录一下 package cn.selevet_01; import java.io.IOException; import java ...
- HDU-1090-A+B for Input-Output Practice (II)(骗訪问量的)
A+B for Input-Output Practice (II) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/327 ...
- 利用JS跨域做一个简单的页面訪问统计系统
事实上在大部分互联网web产品中,我们一般会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便能够在这些统计系统中看到自己站点页面详细的訪问情况.可是有些时候,因为一些特殊情况,我 ...
- Nginx 訪问日志增长暴增出现尖刀的具体分析
前言: Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...
- Android网络编程之使用HTTP訪问网络资源
使用HTTP訪问网络资源 前面介绍了 URLConnection己经能够很方便地与指定网站交换信息,URLConnection另一个子类:HttpURLConnection,HttpURLConnec ...
- [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
应用场景:图片等资源须要设置权限,如:仅仅有认证过的用户才干訪问自己的图片. 解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括.故在安装时要加上- ...
- 设计模式之十五:訪问者模式(Visitor Pattern)
訪问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式. 据<大话设计模式>中说算是最复杂也是最难以理解的一种模式了. 定义(源于GoF<De ...
- 微信訪问页面,莫名其妙刷新两次,火狐、谷歌、ie无问题
做微信刮刮卡活动,有个用户刮奖次数的限制,昨天一切正常,所以就修改了一些东西,今天再打开的时候刮奖次数第一次是1,第二次是3,第三次是5.感觉就是页面刷新了两遍. 检查前后台代码.发现一些bug就顺手 ...
随机推荐
- Android Market google play store帐号注册方法流程 及发布应用注意事项【转载】
[转载]http://www.cnblogs.com/zdz8207/archive/2012/07/09/google-play-store-registered.html Android Mark ...
- Java系列学习(四)-运算计算
1.运算符 (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 [a.加法] [b.正号] [c.字符串连接付] C:/和%的区别 [数据做除法的时候,/取的是商,%取的是余数] D: ...
- 警告视图及操作表单在xcode7.0中的使用
警告视图(alert)及操作表单(action sheet)都用于向用户提供反馈.(模态视图) 操作表单:要求用户在两个以上选项之间做出选择.操作表单从屏幕底部出现,显示一系列按钮供用户选择.用户必须 ...
- python--9、并发之多进程应用
multiprocessing模块 想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Python提供了multiprocessing. ...
- linux 卸载 mongo2.6
要求:linux 卸载 mongo2.6 版本:linux系统:Ubuntu 16.04 mongo: mongo 2.6.12 1. 查看安装的mongo版本和服务 # dpkg –l | gr ...
- JS——事件冒泡与捕获
事件冒泡与事件捕获 1.冒泡:addEventListener("click",fn,false)或者addEventListener("click",fn): ...
- c++ 以二进制和以文本方式读写文件的区别
在c++项目开发中,时常涉及到文件读写操作.因此在这里先简单梳理和回顾一下文本模式和二进制模式在进行文件读写上的区别. 1.linux平台下文本文件和二进制文件的读写 在linux平台下进行文件读写时 ...
- servlet的多线程并发问题
package gz.itcast.e_thread; import java.io.IOException; import javax.servlet.ServletException; impor ...
- Win32编程笔记
我都决定了目前不再接触这些个浪费精力的API了,结果为了DirectX编程我特么又回来了.....微软你的东西真是坑人 以前用这玩意的时候需要什么就查,查完就忘了,这次记一记,以后再用也不至于忘的太离 ...
- MVC5+EasyUI+EF6+Linq通用权限系统出炉(1)
1.先晒一下结构吧,