Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Como guardar el numero de visitas a un objeto

Estas en el tema de Como guardar el numero de visitas a un objeto en el foro de Python en Foros del Web. Hola, quiero hacer algo parecido a como funciona Youtube cuando alguien visita un video se suman las cantidades de visualizaciones totales, pero en esta ocasión ...
  #1 (permalink)  
Antiguo 17/04/2013, 12:19
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Como guardar el numero de visitas a un objeto

Hola, quiero hacer algo parecido a como funciona Youtube cuando alguien visita un video se suman las cantidades de visualizaciones totales, pero en esta ocasión algo simple, ejemplo:

Uso Django 1.5 y vistas genéricas basadas en clases.
models

class Article(models.Model):
#..
visits_count = models.IntegerField(default=0)

views
class ArticleDetail(DetailView):#Usar UpdateView o DetailView
#....
#Como guardo en el field visits_count cuandó entren al articulo.

Gracias.
  #2 (permalink)  
Antiguo 17/04/2013, 13:14
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Como guardar el numero de visitas a un objeto

Puedes hacer un método llamado add_visit() en el modelo Article

Código Python:
Ver original
  1. class Article(models.Model):
  2.     ...
  3.     visits_count = models.IntegerField(default=0)
  4.  
  5.     ...
  6.  
  7.     def add_visit(self):
  8.         if self.visits_count is not None:
  9.             self.visits_count += 1
  10.         else:
  11.             self.visits_count = 0

Y el detail view.
Código Python:
Ver original
  1. from django.views.generic.detail import DetailView
  2.  
  3. from articles.models import Article
  4.  
  5. class ArticleDetailView(DetailView):
  6.  
  7.     model = Article
  8.  
  9.     def get_context_data(self, **kwargs):
  10.         context = super(ArticleDetailView, self).get_context_data(**kwargs)
  11.         self.object.add_visit()
  12.         self.object.save()
  13.         return context

Obviamente lo primero que tienes que hacer es definir el concepto de visita.

Que tal si hago 10 visitas con la misma ip?, que tal si solo veo 10 segundos de video y lo cierro? una petición get y una petición post son iguales? Que tal si tienes 2 visitas al mismo tiempo como manejas que sea thread safe?

Última edición por razpeitia; 17/04/2013 a las 13:23
  #3 (permalink)  
Antiguo 17/04/2013, 17:39
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Como guardar el numero de visitas a un objeto

Hola, en eso mismo estaba pensando, estoy tratando de limitar a una sola IP por articulo, para eso he creado una nueva app llamada visitas con el respectivo modelo:

Código Python:
Ver original
  1. from articulos.models import Articulo
  2. class Visita(models.Model):
  3.     articulo = models.ForeignKey(Articulo)
  4.     ip = models.IPAddressField()
  5.     visitas = models.IntegerField(default=0)

Como siempre me da muy duro las vistas basadas en clases aun no las entiendo muy bien, no se como poder guardar las visitas sin tener ningún error. Ademas REMOTE_ADDR requiere que la clase tenga a request como parámetro y la verdad por mas que busco no entiendo como funciona esto. Si conoces de algún tutoríal de vistas basadas en clase te lo agradezco que lo compartas.

Saludos
  #4 (permalink)  
Antiguo 19/04/2013, 20:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Como guardar el numero de visitas a un objeto

Haz intentado con `self.request` ?

De momento no conozco ningún tutorial de vistas en base a clases.

Si quieres un libro completo te recomiendo el djangobook que esta completo pero poco a poco empieza a quedarse desactualizado y por otro lado tengo este https://django.2scoops.org/ pero es de paga.
  #5 (permalink)  
Antiguo 23/04/2013, 20:14
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Como guardar el numero de visitas a un objeto

Cita:
Iniciado por razpeitia Ver Mensaje
Haz intentado con `self.request` ?

De momento no conozco ningún tutorial de vistas en base a clases.

Si quieres un libro completo te recomiendo el djangobook que esta completo pero poco a poco empieza a quedarse desactualizado y por otro lado tengo este https://django.2scoops.org/ pero es de paga.
Hola gracias, voy a tratar de comprar este tutorial, pero entra la duda si tiene todo lo nuevo con respecto a Django 1.5.

Gracias.
  #6 (permalink)  
Antiguo 23/04/2013, 23:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Como guardar el numero de visitas a un objeto

Por cierto, django-book si esta actualizado pero lo están manteniendo actualizado aquí.

https://django-book.readthedocs.org/en/latest/
  #7 (permalink)  
Antiguo 25/04/2013, 14:09
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Como guardar el numero de visitas a un objeto

Cita:
Iniciado por razpeitia Ver Mensaje
Por cierto, django-book si esta actualizado pero lo están manteniendo actualizado aquí.

https://django-book.readthedocs.org/en/latest/
Hola, me compre el tutorial que me habías dicho, espero aprender bastante.

Etiquetas: count, django, numero, objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:14.