【发布时间】:2020-09-10 12:28:26
【问题描述】:
使用基于类的视图,我可以成功处理我的普通表单,我的 ajax 表单返回有效并且一切都很好,但是我真的很难弄清楚我应该在哪里处理 ajax 请求,我应该在 get_context_data 中做吗或者在 form_valid 方法中,无论哪种情况都不能正确处理
def get_context_data(self, **kwargs):
context = super(POEdit, self).get_context_data(**kwargs)
context['document_header'] = self.object
if self.request.POST:
#Posted Form
if self.request.is_ajax:
self.get_ajax_response()
context['form_comments'] = DocumentCommentsUpdateForm(self.request.POST, instance=self.object)
context['form_lines'] = DocumentFormSetUpdate(self.request.POST, instance=self.object)
else:
#No Post
context['form_lines'] = DocumentFormSetUpdate(instance=self.object)
context['form_comments'] = DocumentCommentsUpdateForm()
context['comments'] = self.get_comments()
return context
得到下面的ajax响应,它的入口
def get_ajax_response(self):
data = {
'pk': 'pk',
}
return JsonResponse(data)
在视图中有适当的代码来发送和接收响应
$('#comments-form').submit(function(e){
e.preventDefault();
var serializedData = $(this).serialize();
$.ajax({
url : "{% url 'po:edit' document_header.id %}",
type : "POST",
data : serializedData,
success : function(json) {
$('#id_comment').val('');
console.log(json);
console.log("success");
},
error : function(xhr,errmsg,err) {
$('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: "+errmsg+
" <a href='#' class='close'>×</a></div>");
console.log(xhr.status + ": " + xhr.responseText);
}
});
}
);
【问题讨论】:
标签: jquery django ajax forms web