我需要使用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
使用引导主题呈现表单
答案 0 :(得分:1)
当你在else子句中实例化所谓的空表单时,你仍然传递request.POST
。不要这样做:只做ubicacion_form = UbicacionForm()
。