zoukankan      html  css  js  c++  java
  • 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操作

    [使用模板做一个网站訪问计数器]

    [html页面中通过文件对网页訪问计数:网页计数器]

    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 Hits to an object (be it a blog post, poll, etc). To use thejQuery 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] %}
    

    [Installation and Usage]

    [example project]

    [django-hitcount]

    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 key

    • TRACKING_USE_GEOIP: set this to True if you want to see markers onthe map

    • GEOIP_PATH: set this to the absolute path on the filesystem of yourGeoIP.dat orGeoIPCity.dat or whatever file. It's usually somethinglike/usr/local/share/GeoIP.dat or/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_CACHE is 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

    ref:在Django中实现一个高性能未读消息计数器


  • 相关阅读:
    [转]Maven 初学+http://mvnrepository.com/
    比较IDEA与Eclipse
    [web] 使用Promise封装fetch实现网络超时,终止请求的功能
    [web] 理解和使用Promise.all和Promise.race
    [Web] How to Test React and MobX with Jest
    [Web 测试] Jest单元测试的几个指标
    [Web] 取消Promise
    [安全分析] 安全分析中的威胁情报(一)
    [Web] 深入理解现代浏览器
    [Web] HTML5新特性history pushState/replaceState解决浏览器刷新缓存
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6869631.html
Copyright © 2011-2022 走看看