mi ajax de la siguiente manera:
<script> $(document).ready(function () { $.ajaxSetup({ data: {csrfmiddlewaretoken: '{{ csrf_token }}'} }); $("#submit").submit(function () { var title = $("#title").val(); var body = $("#body").val(); var images = $("#browsefile")[0].files[0]; $.ajax({ type: "POST", data: {title: title, body: body, images: images}, url: "{% url 'xxxxx' %}", success: function (result, statues, xml) { alert(result); }, error: function () { alert("false"); } }) }) }) </script>y mi patrón de URL de la siguiente manera:
from django.conf.urls import url from django.contrib import admin from django.conf import settings from django.conf.urls.static import static from blog import views urlpatterns = [ url(regex=r'^add/$', view=views.add, name='bbb'), url(regex=r'^newBlog/$', view=views.addblog, name='xxxxx'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Excepto los datos de publicación de ajax en el método addblog, pero obtengo POST /add/ HTTP/1.1 en su lugar. Alguien puede decirme donde cometí un error, gracias!
Intente agregar event.preventDefault(); en la función de envío para deshabilitar el comportamiento predeterminado del formulario, que es seguir el atributo de acción.
$("#submit").submit(function (event) { event.preventDefault(); var title = $("#title").val(); var body = $("#body").val(); var images = $("#browsefile")[0].files[0]; formdata = new FormData(); formdata.append("images", images); formdata.append("body", body); formdata.append("title", title); $.ajax({ type: "POST", data: formdata, url: "{% url 'xxxxx' %}", success: function (result, statues, xml) { alert(result); }, error: function () { alert("false"); } }) return false; })EDITAR : por comentario.