Django使用ajax响应呈现ModelForm

时间:2014-12-11 16:50:14

标签: jquery python ajax django

我需要使用ajax调用的响应呈现django模型。

我实际做的是:

我调用ajax函数给出model_pk = 0以返回一个空表单

$.ajax({ // create an AJAX call...
    data: {'ubi_pk':0},
    type: 'POST', // GET or POST
    url: '{% url 'ubicacion_obtener_form' %}',
    success: function(response,status) { // on success..
        if (status == 'success'){
            $('#form-nueva-ubicacion').html(response);
        }
        ...
    },
    ...
});
return false;

这是我的观点:

def ubicacion_obtener_form(request):
    try:
        ubi_pk = request.POST.get('ubi_pk',0)
        if ubi_pk!='0':
            ubi = Ubicacion.objects.get(pk=ubi_pk)
            ubicacion_form = UbicacionForm(request.POST,instance=ubi)
            form = render_to_string('ubicacion_form.html', {'ubicacion_form':ubicacion_form},
                                        context_instance=RequestContext(request))
        else:
            ubicacion_form = UbicacionForm(request.POST)
            form = render_to_string('ubicacion_form.html', {'ubicacion_form':ubicacion_form},
                                        context_instance=RequestContext(request))
        return HttpResponse(form,status=200)
    except Ubicacion.DoesNotExist:
        return HttpResponse(u'No existe la ubicación',status=400)
    except Exception as e:
        return HttpResponse('%s %s' % (e.message,e.args),status=500)

这是ubicacion_form.html模板:

{% load crispy_forms_tags %}
{% csrf_token %}
{{ubicacion_form|crispy}}

当我给ajax函数一个ID时,我的视图应该返回带有Model数据的表单,带有数据的字段,但是当我尝试获取一个空表单时,它返回给我的表单“形成错误“,带有*必要字段和那些可怕的红色的消息。

我做错了什么?如何在没有错误消息的情况下获取空表单?

注意我使用crispy_forms使用引导主题呈现表单

1 个答案:

答案 0 :(得分:1)

当你在else子句中实例化所谓的空表单时,你仍然传递request.POST。不要这样做:只做ubicacion_form = UbicacionForm()