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

173
Visualizações
Obtener valores POST en Django

Tuve un envío ajax (consulta GET ). Pero hace cambios en mi base de datos, por lo que las personas inteligentes me dijeron que debería usar POST en su lugar con {% csfr_token %} .

OBTENER consulta:

 $(document).on('submit','#follow', function(e){ var $button = $(this).find('button'); e.preventDefault(); $.ajax({ url:'/event/{{ event.id }}/', data: "add={{ event.id }}", success:function(){ $('#follow').hide(); $('#unfollow').show(); } }) });

vistas.py

 ... event = get_object_or_404(Event, id=event_id) user = request.user if request.GET.get('add'): event.users.add(user) event.save() if request.GET.get('remove'): event.users.remove(user) event.save() ...

Así que agregué type:"post", y csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]) a los datos, pero no sé qué usar en lugar de if request.GET.get('add'): y if request.GET.get('add'): . if request.POST.get('add'): pero no funciona. Entonces, ¿cómo usar eso if con valores POST?

UPD.

Ok, lo que tengo ahora... plantilla:

 <form id="unfollow" {% if user not in event.users.all %}style="display:none;"{% endif %}> <input type="hidden" value="{{ event.id }}" name="remove"> <button type="submit" class="btn btn-warning btn-block">{% trans "Unfollow"%}</button> </form>

...

 $(document).on('submit','#unfollow', function(e){ var $button = $(this).find('button'); e.preventDefault(); $.ajax({ type:"post", url:'/event/{{ event.id }}/', data: { 'action': 'remove' }, success:function(){ $('#unfollow').hide(); $('#follow').show(); } }) });

vistas.py:

 def show_event(request, event_id): event = get_object_or_404(Event, id=event_id) user = request.user if 'action' in request.POST: if 'action' == 'add': event.users.add(user) event.save() elif 'action' == 'remove': event.users.remove(user) event.save() return render(request, 'events/event.html', {'event':event, 'user':user}

No hay errores, pero no funciona. success:function() funciona bien pero no hay cambios en la base de datos. ¿Algún consejo?

También probé if request.POST('action') == 'add': pero no ayudó

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

0

Use un objeto para los datos {add: {{ event.id }}} en lugar de codificarlo como una cadena "add={{ event.id }}"

Entonces debería poder obtener el valor de request.POST con cualquiera de los siguientes:

 request.POST['add'] request.POST.get('add', 'default') # use default if key doesn't exist

Ya tiene event_id en la URL, por lo que realmente no necesita configurar add={{event.id}} . Sería mejor hacer algo como "

 {'action': 'add'}

Entonces, en su opinión, puede hacer algo como:

 if 'action' in request.POST: if request.POST['action'] == 'add': # do something elif request.POST['action'] == 'remove': # do something else
over 4 years ago · Santiago Trujillo Relatório

0

Pruebe lo siguiente si QueryDict está vacío:

data = request.data['action']

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