Hi Andrew, To have a proper `to_python` transformation from `POST` strings please use forms. They do that perfectly and also they can handle any king of user input validations.
form = SomeCustomForm(request.POST) form.is_valid(): parsed_dictionary = form.cleaned_data() As for 'Ajax'. It seems like you should manually parse body before any further processing. Request instance has `is_ajax <https://docs.djangoproject.com/en/1.10/_modules/django/http/request/#HttpRequest.is_ajax>` method to detect such requests. That can be done import json if request.is_ajax(): json_dict = On Thursday, August 18, 2016 at 4:34:33 AM UTC+3, agapito treviño wrote: > > Elros Romeo > > as defined by the form.as_p.? > I want to implement this > > > > El viernes, 15 de julio de 2016, 18:49:00 (UTC-5), Elros Romeo escribió: >> >> Hi, i hope you can help me, im trying to make a django post form without >> reloading the page using ajax, but im getting error 500 when submit, can >> you help me to fix this, this is my code: >> >> *models.py* >> >> class ProductoConcepto(models.Model): >> producto = models.ForeignKey(Producto) >> orden = models.ForeignKey(Cobro) >> cantidad = models.FloatField() >> >> >> *urls.py* >> >> from django.conf.urls import patterns, include, url >> from django.contrib import admin >> from cobro import views >> >> urlpatterns = [ >> url(r'^cobro/agregar_concepto/$', views.addconcept_product, >> name='add_concepto'), >> ] >> >> *views.py* >> >> >> def addconcept_product(request): >> >> if request.method == 'POST': >> >> if form.is_valid(): >> producto = request.POST['producto'] >> orden = request.POST['orden'] >> cantidad = request.POST['cantidad'] >> >> ProductoConcepto.objects.create(producto=producto, >> orden=orden, cantidad=cantidad) >> >> return HttpResponse('') >> >> *template* >> >> <div class="modal inmodal fade" id="myModal1" tabindex="-1" >> role="dialog" aria-hidden="true"> >> <div class="modal-dialog modal-m"> >> <div class="modal-content"> >> <div class="modal-header"> >> <button type="button" class="close" >> data-dismiss="modal"> >> <span aria-hidden="true">×</span> >> <span class="sr-only">Cerrar</span> >> </button> >> <h3 class="modal-title">Agregar nuevo >> concepto</h3> >> </div> >> <div class="modal-body"> >> <p>Datos de concepto a agregar:</p> >> <div class="doctorformstyle"> >> <form id='formulario-modal' method='post' >> enctype='multipart/form-data'> >> {% csrf_token %} >> <ul>{{form2.as_p}}</ul> >> >> <!-- rendered form2 fields: <select id="id_producto" >> name="producto"><option value="1" >> selected="selected">object</option></select> --> >> <!-- form2 fields: <select id="id_orden" name="orden"> >> <option value="1" selected="selected">object</option> >> </select> --> >> <!-- form2 fields: <input id="id_cantidad" name="cantidad" step="any" >> type="number"> --> >> >> <div class="row align-center"> >> <input type='submit' name="save1" >> value='Guardar' class="btn btn-w-m btn-primary"/> >> </div> >> >> </form> >> </div> >> </div> >> </div> >> </div> >> </div> >> >> <script type="text/javascript"> >> $(document).on('submit', '#formulario-modal', function(e){ >> e.preventDefault(); >> $.ajax ({ >> type: 'POST', >> url: '{% url 'add_concepto' %}', >> data: { >> producto: $('#id_producto').val(), >> orden: $('#id_orden').val(), >> cantidad: $('#id_cantidad').val(), >> csrfmiddlewaretoken: '{{ csrf_token }}', >> }, >> sucess:function(){ >> alert("OK"); >> } >> }) >> }); >> >> </script> >> >> this is the error: POST http://127.0.0.1:8000/cobro/agregar_concepto/ >> 500 (Internal Server Error) >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/238ddd6d-a084-422a-b40c-0cbc06ff9002%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.