Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

564
Visualizações
cómo construir un sistema de marcadores en django como en instagram

Quiero construir este sistema de marcadores como en Instagram, tengo problemas para escribir la lógica en views.py y mostrarla. Entonces, lo que quiero es marcar "Act" en función de "act-id's" en el modelo de lista de deseos si un usuario está autenticado y sería mejor si usamos Ajax para la llamada posterior (cuando se hace clic en el ícono de marcador) o abierto para nuevas opciones de verdad. Aquí está mi código actual... ¡Por favor ayúdenme! si necesita algún código adicional, hágamelo saber.

modelos.py

 class Act(models.Model): label1 = models.CharField(max_length=50, blank=False) label2 = models.ImageField(blank=False, null=True) label3 = models.IntegerField(('year'), choices=YEAR_CHOICES, default=datetime.datetime.now().year) label4 = models.CharField(max_length=80) def __str__(self): return self.Name class Wishlist(models.Model): user_id = models.ForeignKey(User, on_delete=models.CASCADE,null=True) act_id = models.ForeignKey(Act, on_delete=models.DO_NOTHING)

vistas.py

 @csrf_exempt def wishlist(request): act_id = request.POST.get('act_id') if not act_id: raise ValueError("Required act_id to set wishlist") user_id = request.user.pk try: act_id = Act.objects.get(pk=act_id) wishlist_obj = { 'user_id': user_id, 'act_id': act_id } Wishlist(**wishlist_obj).save() except ObjectDoesNotExist: return HttpResponse('Some error occured, unable to add to wishlist') return HttpResponse('Added to wishlist')

urls.py

 urlpatterns = [ path('signup/', views.signup, name='signup'), path('login/', views.login_req, name='login'), path("logout/", views.logout_req, name="logout"), path('home/', views.home, name='home'), path('wishlist/', views.wishlist, name='wishlist'), ]

para más contexto, aquí hay una imagen conceptual de home.html

imagen de error

[![ingrese la descripción de la imagen aquí][3]][3]

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Esta es mi opinión sobre cómo puedes hacer esto.

Lista de deseos el modelo si un usuario está autenticado y sería

Siempre prefiero usar decorators para verificar si el usuario está autenticado. Puede ver aquí cómo lograr esto: escribir su propio decorador para la autenticación de inicio de sesión . Y luego puede simplemente aplicar @login_required para verificar si el usuario está autenticado o no.

También puede simplemente verificar en views.py usando el atributo is_authenticated para verificar si el usuario inició sesión o no.

 if request.user.is_authenticated: # do something if the user is authenticated

sería mejor si usamos Ajax para la llamada posterior (al hacer clic en el icono de marcador)

También recomendaría una solicitud de Ajax para actualizar esto, ya que se adapta a una tarea asíncrona. Puede ver el ejemplo aquí sobre cómo puede escribir la función ajax . Pero en resumen, una vez que el usuario haga clic en el botón de bookmark , la solicitud ajax se realizará a la función en views.py con los datos de post relevantes, luego puede simplemente agregar las operaciones deseadas en la función.

Editar:

El problema es bastante amplio y, aunque tengo algunas soluciones, escribir la mayoría con palabras simplemente se volverá complicado para que puedas sacar algo, ¡pero lo intentaré!

Entonces, dado que tiene el modelo que guarda y muestra la tarjeta que se ha incluido en la lista de deseos; por lo tanto, al deshacer esa operación, simplemente tendría que aplicar ingeniería inversa a la lógica usando Ajax. Entonces, en primer lugar, cuando un usuario hace clic para deshacer una tarjeta que se ha incluido en la lista de deseos, realiza una llamada ajax, por ejemplo, aquí y luego en sus views.py simplemente verifica si el elemento en el que se hizo clic está realmente en la lista de deseos al verificar que el objeto existe en su base de datos.

Si existe, simplemente devuelve una JSonResponse({}) exitosa desde la función en views.py y luego en su

 success: function (response) { }

en su Js , simplemente agregue el código HTML relevante para eliminar la tarjeta de la lista de deseos. Aquí se muestra un buen ejemplo que demuestra cómo puede usar JSON y ajax para actualizar la tarjeta no listada.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda