Как обработать Django форму представить ответ HTML в диалоге / модальном jquery?
Я пытаюсь отправить форму из диалогового окна и показать ответ в том же диалоговом окне. Прямо сейчас я пытаюсь с представлением Django, которое возвращает форму (с ошибками Valdiation) в виде HTML-строки.
template = "register.html"
html = render_to_string(template, {'form': form})
return HttpResponse(html, content_type="text/html; charset=utf-8")
Но у меня есть некоторые проблемы с функцией в моем диалоге-модале. Мне не хватает той части, которая заменяет содержимое в "модальном / диалоговом окне" новым html из HttpResponse.
$('#registerform').submit(function(e){
e.preventDefault();
$.post('register', function(data){
//somthing is missing here..
});
return false;
});
Не уверен насчет форматирования сейчас, но вы поняли идею. Если бы какой-нибудь эксперт мог направить меня в правильном направлении, я был бы счастливым человеком! Спасибо
1 ответ
Это реализация с использованием фигурных скобок Django: https://github.com/brack3t/django-braces
//Inside your click, event whatever call...
...
// Get the token initialy, this is the way to do it
// using the jQuery cookie plugin
var $csrftoken = $.cookie('csrftoken');
$.ajax({
type: 'POST',
url: '/your/post/url/',
crossDomain: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", $csrftoken);
},
success: function(ctx) {
"""
ctx contains the data your view returns,
If you are using Django braces, you could implement the
AjaxResponseMixin mixin which allows you to return a dict
to the view.
"""
},
});
...
views.py
class AjaxDosomethingView(JSONResponseMixin, AjaxResponseMixin, View):
def post_ajax(self, request, *args, **kwargs):
"""
Do some stuff and create the response object
"""
myid = request.POST.get('somevar')
result = MyModel.objects.get(id=myid)
response = {'id': result.id, 'title': result.title}
return self.render_json_response(response, 200)