Вы должны визуализировать HTML-код вашей формы с помощью render_to_string, а не render_to_response, чтобы экранировать и установить его как строку в кодировке Unicode
Я использовал это для парсера BeautifulSoup HTML, XHTML и XML, чтобы получить точный HTML-код формыкак это:
if form.is_valid():
form.save()
html = render_to_string("template.html",
{'form':form},context_instance=RequestContext(request))
soup = BeautifulSoup(html)
html_form = soup.findAll('form')
json = simplejson.dumps({'status':True,
'html':unicode(html_form[0]),
'umessage':js_translators.NotifyMessage.data_saved}, ensure_ascii=False)
return HttpResponse(json, mimetype="application/json")
else:
html = render_to_string("template.html",
{'form':form},context_instance=RequestContext(request))
soup = BeautifulSoup(html)
html_form = soup.findAll('form')
json = simplejson.dumps({'status':False,
'html':unicode(html_form[0]),
'umessage':js_translators.NotifyMessage.data_wrong}, ensure_ascii=False)
return HttpResponse(json, mimetype="application/json")
Итак, на стороне клиента я просто получаю ответ с помощью jQuery и Ajax и переписываю код формы с помощью:
$('#myform').html(response.html);
С этим я решил эту проблему с проверкой формы django с помощью ajax