/ / Django ajax redireccionando en el envío de formularios - python, jquery, ajax, django

Django ajax redireccionando en el envío de formularios - python, jquery, ajax, django

Estoy intentando devolver datos con una solicitud ajax enun formulario de presentación. Mi objetivo era usar dos vistas, una para manejar la carga de plantillas y otra para manejar la solicitud POST desde el formulario. En el estado actual, el formulario está redirigiendo al JSON que está en la devolución de llamada. Eso tiene sentido ya que la forma en que está apuntando la url, sin embargo, solo quiero pasar los datos a la página actual y no volver a cargar la página o redirigirme a otra página.

Aquí está el código:

user.html

<form action="{% url "ajax-user-post" %}" method="post">
{% csrf_token %}
{% for user in users %}
<input type="submit" name="name" value="{{ user }}">
{% endfor %}

views.py

def ajax_user(request):
# get some data..

if request.METHOD == "POST":
user = request.POST["user"]
user_data = User.objects.get(user=user)

data = {"user_data": user_data}
return JsonResponse(data)


def user(request):
return render(request, "user.html", context)

urls.py

url(r"^user/", user, name="user"),
url(r"^ajax/user/", ajax_user, name="ajax-user-post")

.js

$("form").on("submit", function(){
var name = // the name of the user selected
$.ajax({
type: "POST",
dataType: "json",
url: "ajax/user/",
data: { "csrfmiddlewaretoken": csrftoken, "name": name, "form": $form.serialize() },
success:function(data) {
// hide the current data
console.log(data);
displayUserData(data)
}
})
});

¡Gracias por la ayuda por adelantado!

Respuestas

4 para la respuesta № 1

solo quiero pasar los datos a la página actual y no volver a cargar la página ni ser redirigido a otra página.

Eso significa que debe detener el evento de envío de formulario con el event.preventDefault () llamada.

Por lo tanto, cambie esta línea de:

$("form").on("submit", function(){

a dos siguientes:

$("form").on("submit", function(e){
e.preventDefault();