我这里的代码很少。
请你详细解释一下那段代码到底做了什么。请。
在脚本中这里是ajax调用:
$.ajax({
url : "{% url 'upload_document' %}",
type: "POST",
data : {csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
title: document.getElementById('title').value,
//document: document: document.getElementById('document'),
},
dataType : "json",
success: function( response ){
if(response == "True"){
// success
}
else {
//append errors
}
}
});
ajax如何在django中运行,我们如何在视图中使用ajax请求 在这里我的看法 views.py
def upload_document(request):
print request.POST
print request.FILES
if request.is_ajax():
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES, user = request.user)
if form.is_valid():
form.save()
return HttpResponse(simplejson.dumps('True'), mimetype = 'application/json' )
else:
errors = form.errors
return HttpResponse(simplejson.dumps(errors), mimetype = 'application/json' )
先谢谢。
答案 0 :(得分:1)
通常,$.ajax
方法发送异步http请求。
您可以阅读here。
第一个参数是url,我们发送请求。
其次,请求方法可能是GET,POST,PUT,DELETE等。请参阅wiki
第三个参数是带有数据的键值字典,您可以在服务器端使用它。 在django中,您可以在request.POST(在发布请求的情况下)访问它
第四个参数是function,当服务器成功返回响应时调用。
你不需要在这个函数中使用if语句,因为当请求失败或服务器没有给出响应,或者服务器返回错误(例如40*
代码之类的代码)时,不会调用此函数。
此函数接受服务器响应的一个参数。您需要处理此数据,例如向用户显示Invalid data, please correct errors...
或Valid data. your request is in process now.
等消息以及此类人员。
最后一个参数是服务器响应的数据类型。 jQuery非常聪明,可以为你解析json或html,所以在这种情况下,response(成功函数的参数)是纯JS对象,从JSON反序列化。
在服务器端(Django视图)中,您必须对请求的数据进行一些验证。并用它做点什么。例如,将其保存到数据库。当我必须实现ajax表单处理时,我会做这样的事情:
if request.method == 'POST':
response = {}
form = UploadForm(request.POST, request.FILES, user = request.user)
if form.is_valid():
form.save()
response['success'] = 1
else:
response['success'] = 0
response['errors'] = dict(form.errors)
return HttpResponse(simplejson.dumps(response), mimetype = 'application/json' )
在客户端,js就是这样的
$.post('/url/to/view',
function(json){
if(json['success']){
alert('Yahooo! Successfull request')
}
else{
alert('Oooops. Looks like you send invalid data')
}
}, 'json')
祝你好运!