Estoy tratando de publicar datos de una entrada en mi vista de django para procesar estos datos, que es un texto, y estoy usando AJAX pero obtengo la entrada NULL en mi vista
$(document).on('submit', '#post-form',function(e){ $.ajax({ type:'POST', url:'{% url "index" %}', data:{ inp:$('#qst').val() csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(), action: 'post' }, dataType: 'json', success:function(json){ document.getElementById("post-form").reset(); $(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>') $(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>') }, error : function(xhr,errmsg,err) { console.log(xhr.status + ":" + xhr.responseText); // provide a bit more info about the error to the console } }); });Y esta es mi vista
from .predict_model import respond def chat(request): context={} inp="" response_data = {} if request.method == 'POST' and request.is_ajax: inp = request.POST.get('inp') answer=respond(inp) response_data['answer'] = answer response_data['inp'] = inp return JsonResponse(response_data) return render(request, 'templates/rhchatbot/index.html',context )Pero cuando imprimo el valor inp obtengo: {'inp': null}
Y aquí está el formulario donde obtengo la entrada:
<form class="chatbox__footer" method="POST" id='post-form' >{% csrf_token %} <img src="{% static 'images/icons/emojis.svg' %}" alt="" class="icon"> <img src="{% static 'images/icons/microphone.svg' %}" alt="" class="icon"> <input id='qst' type="text" placeholder="Write a message..." > <button class="send-btn" alt="send-btn" type='submit'> <img src="{% static 'images/send.png'%}"> </button> <img src="{% static 'images/icons/attachment.svg' %}" alt="" class="icon"> </form> </div>Primero debe agregar el atributo de name al campo de entrada:
<input id='qst' type="text" placeholder="Write a message..." name="inp">entonces puedes intentar lo siguiente:
$("#post-form").submit(function (e) { e.preventDefault(); var serializedData = $(this).serialize(); $.ajax({ type: 'POST', url: "{% url 'index' %}", data: serializedData, success: function (json) { document.getElementById("post-form").reset(); $(".messages_area").append('<div class="messages__item messages__item--visitor">'+json.inp+'</div>') $(".messages_area").append('<div class="messages__item messages__item--operator">'+json.answer+'</div>') }, error: function (xhr,errmsg,err) { console.log(xhr.status + ":" + xhr.responseText); } }) })