Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

435
Vistas
Establecer el campo del modelo mediante onclick (django)

este es mi código:

modelos.py

 class Photos(models.Model): username = models.CharField(max_length=50) caption = models.CharField(max_length=150, blank=True, null=True) img = models.ImageField(upload_to = 'userProfile/static/img', null=True, blank=True) update_date = models.DateTimeField(default=timezone.now) category = models.CharField(max_length=50, blank=True, null=True) likes_count = models.IntegerField(blank=True, null=True) class Meta: managed = False db_table = 'photos'

y esta es una parte del código html que produce mi código js

 <div class="container_card"> <img class="container_card_image" onclick="..." src="/static/img/1/uploads/img1.jpg"> </div>

Quiero que cuando haga clic en la imagen, se incremente 'likes_count' sin actualizar la página (como instagram o como todas las redes sociales).

Luego, si uso <a href="{% url 'like' value=user.id %}> <img ...> </a> y una vista definida de esta manera, aumenta el número de likes pero no es bueno porque refresca la página para cada clic

urls.py

 urlpatterns = [ ... url(r'^(?P<value>\w+)$', views.like, name='like'), ]

vistas.py

 def like(request, value): photo = Photos.objects.get(pk=value) photo.likes_count += 1 photo.save() return redirect('home')

¿Hay alguna manera de conseguir lo que quiero?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para obtener lo que quieres, necesitas usar ajax. Por ejemplo, jquery es realmente simple y fácil de hacer una solicitud ajax y manejar la respuesta. https://api.jquery.com/jquery.get/

 $.post( "photo/15/like", function( data ) { // here you handle the response. });

Además, su vista de django no debería redirigirlo a otra página, porque esto hará que toda la página se actualice. En su lugar, debe usar un JsonReponse

 def get(self, request, *args, **kwargs): photo = Photos.objects.get(pk=value) photo.likes_count += 1 photo.save() return JsonResponse({'action': 'success'}, safe=False)

Más avanzado, puede usar un marco completo que maneja respuestas json como http://www.django-rest-framework.org/ , y para escribir menos código use algunas de las vistas basadas en clases http://www.cdrf.co/

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda