跳转到主要内容

Django的访问计数器

项目描述

欢迎

Django visits是一个用于Django驱动的Web应用的点击计数器应用程序。

您有两种方式使用此应用程序;第一种是计数请求的URL(CounterMiddleware),第二种是计数对象访问(即模型)

配置

您的设置文件应包含以下设置

  • MIN_TIME_BETWEEN_VISITS: (数字)用户更新计数器所需的最小允许时间间隔

  • IGNORE_URLS: (列表) 忽略的URL列表,例如静态URL等。注意:仅通过不增加请求的击中计数器来忽略META.PATH_INFO以列表中任何字符串开头的请求。尽管如此,访问仍然会被记录。以下IGNORE_USER_AGENTS和BOTS_USER_AGENTS设置也是同样的情况。

  • IGNORE_USER_AGENTS: (列表) 用来定义要忽略的用户代理。支持正则表达式。

  • BOTS_USER_AGENTS: (列表) 用来定义用户是真实用户还是由BotVisitorMiddleware识别的机器人。支持正则表达式。

  • REQUEST_FIELDS_FOR_HASH: (列表) 用来生成访客的唯一标识符。

  • URI_WITH_GET_PARAMS: (布尔值) 使用GET参数来识别不同的URI。

  • VISITS_OBJECTS_AS_COUNTERS: (布尔值) 启用或禁用将访问对象作为计数器的行为(当为False时,每个不同的访问都会在不同的对象中计数)。

默认情况下,BOTS_USER_AGENTS将具有以下值

[
    "Teoma", "alexa", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly",
    "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot", "crawler",
    "www.galaxy.com", "Googlebot", "Googlebot/2.1", "Google", "Webmaster", "Scooter", "James Bond",
    "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", "Baiduspider",
    "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider",
    "WebAlta Crawler", "MJ12bot", "Yandex/", "YaDirectBot", "StackRambler", "DotBot", "dotbot"
]

用法

  • 将访问添加到INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    "visits",
)
  • 如果您想过滤某些类型的用户代理,您可以在settings.py中定义IGNORE_USER_AGENTS

IGNORE_USER_AGENTS = ["Wget/", "curl/"]
  • 如果您想从真实用户中过滤机器人,请在MIDDLEWARE_CLASSES中设置

MIDDLEWARE_CLASSES = (
    # ...
    "visits.middleware.BotVisitorMiddleware",
)
  • 如果您想自动按URL计数访问,您应该在MIDDLEWARE_CLASSES中添加CounterMiddleware

MIDDLEWARE_CLASSES = (
    # ...
    "visits.middleware.CounterMiddleware",
)
  • 如果您想自动按URL和GET参数计数访问,您应该在settings.py中添加URI_WITH_GET_PARAMS=True

  • 如果您想手动计数URL访问,可以按照以下方式操作

from visits.models import Visits

def some_object_view(request, pk):
    Visit.objects.add_uri_visit(request, request.META["PATH_INFO"], APP_LABEL)
    #...
    #...
  • 如果您想按对象计数访问,则与上面的例子类似

from visits.models import Visits

def some_object_view(request, pk):
    some_obj = get_object_or_404(SOME_MODEL, pk=pk)
    Visit.objects.add_object_visit(request, obj=some_obj)
    #...
    #...
  • 在模板内部,您可以使用以下方法获取

  • 使用get_visits获取对象访问次数

  • 使用get_visits模板标签获取URL访问次数

{% load visits_tags %}

{% get_visits some_model_instance as visits %}
{% get_visits some_request_instance as visits %}
{% get_visits some_uri_regex as visits %}

注意:要使用get_visits模板标签获取URI访问次数,您应该在TEMPLATE_CONTEXT_PROCESSORS中添加以下内容

TEMPLATE_CONTEXT_PROCESSORS = (
    #...
    "visits.context_processors.request_meta",
)

祝您玩得开心!

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-visits-0.1.6.tar.gz (7.3 kB 查看哈希值)

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面