[pyar] [django] Hit Counter

Pablo SEMINARIO pabluk en gmail.com
Mar Oct 8 10:16:26 ART 2013


Hola Ramiro,

Como dice Julian, lo mas simple sería agregar en la vista donde generas la
página de la noticia o de las canciones un contador.
Para esto, en el modelo "Noticia" tendrias que tener un campo llamado por
ejemplo "hits", algo asi:


# models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    hits = models.IntegerField(default=0)


# views.py
from django.shortcuts import render, get_object_or_404
from news.models import Article

def show(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    article.hits += 1
    article.save()
    context = {'article': article}
    return render(request, 'news/article.html', context)

def most_visited(request):
    articles = Article.objects.order_by('-hits')[:10]
    context = {'articles': articles}
    return render(request, 'news/most_visited.html', context)


Pero según la doc
https://docs.djangoproject.com/en/1.5/ref/models/instances/#updating-attributes-based-on-existing-fieldsuna
mejor forma de hacerlo es reemplazando

article.hits += 1

por

article.hits = F('hits') + 1

De todas formas tenes que tener un cuenta que ese contador de hits puede
ser mas complicado de implementar si tenes muuuchas visitas por noticia,
porque imaginate que vas a generar un update en la base de datos por cada
visita, y ademas no podrías usar ningún sistema de cache de paginas, porque
sino va a ignorar hits.
 Todo depende del trafico esperado, sino algunos usan Javascript
asincronico con Redis para cachear los hits y cada X segundos escribir en
la DB.



2013/10/8 Ramiro Floydant <ramirotrvnt18 en gmail.com>

> Podrías ser un poco más explícito por favor?
>
> Gracias por contestar.
>
>
>
> On Tue, Oct 8, 2013 at 8:46 AM, <juwaks en gmail.com> wrote:
>
>> Yo te recomendaria que en la vista que desarrollaste le sumes a un
>> contador. Entonces a cada url le corresponde una vista y un contador.
>> -----Original Message-----
>> From: Ramiro Floydant <ramirotrvnt18 en gmail.com>
>> Sender: "pyar" <pyar-bounces en python.org.ar>Date: Tue, 8 Oct 2013 08:06:24
>> To: Python Argentina<pyar en python.org.ar>
>> Reply-To: Python Argentina <pyar en python.org.ar>
>> Subject: [pyar] [django] Hit Counter
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20131008/9b82ec4b/attachment.html>


More information about the pyar mailing list