![](/img/trans.png)
[英]How do I get the number of visitors currently looking at my django website?
[英]How do I count number of visitors on a Django website?
我如何計算我網站上的訪問者,以便每次用戶訪問該網站時它都會增加。 我可以使用以下代碼計算訪問者的瀏覽次數:
def blog_detail(request, blog_slug):
blog = get_object_or_404(Blog, slug=blog_slug)
session_key = 'blog_views_{}'.format(blog.slug)
if not request.session.get(session_key):
blog.blog_views += 1 # here
blog.save()
request.session[session_key] = True
context = {
'blog': blog,
'categories': get_category_count()
}
return render(request, 'blogs/blog-detail.html', context)
在我的模型中有blog_views
字段時。 我不知道是否有任何類似的方法來計算我的網站被訪問的次數。
有些人建議使用hitcount
但我不能在通用視圖以外的任何地方使用它。 如果您也提出建議,請用一些代碼進一步詳細說明,謝謝。 非常感謝。
您可以為此編寫一個 中間件類,而不是在每個視圖上添加“計數”邏輯。 像這樣的東西:
def hitcount_middleware(get_response):
def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = get_response(request)
# Get the URL from the `request` parameter and save it
# in a Hitcount model.
return response
return middleware
通過做這個,
views
的代碼會更清晰,希望能幫助到你。
不確定您的問題是否仍然存在,但很少有項目可以幫助您。 有Django-visits計算請求的 url (CounterMiddleware) 或計數對象訪問。
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)
還有django-hitcount項目,它啟用了多個選項來計算頁面或對象上的點擊次數。
from django.db import models
from hitcount.models import HitCountMixin
# here is an example model with a GenericRelation
class MyModel(models.Model, HitCountMixin):
# adding a generic relationship makes sorting by Hits possible:
# MyModel.objects.order_by("hit_count_generic__hits")
hit_count_generic = GenericRelation(
HitCount, object_id_field='object_pk',
related_query_name='hit_count_generic_relation')
# you would access your hit_count like so:
my_model = MyModel.objects.get(pk=1)
my_model.hit_count.hits # total number of hits
my_model.hit_count.hits_in_last(days=7) # number of hits in last seven days
在視圖函數和 home.html 模板頁面中添加以下代碼
def HOME(request): "#Number of visits to this view, as counted in the session variable." num_visits = request.session.get('num_visits', 0) request.session['num_visits'] = num_visits + 1 context = {'num_visits': num_visits } return render(request,'home.html',context=context)
Visitors Count {{ num_visits }}
這將在郵件主頁刷新時計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.