Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

428
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!