首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在django中的views.py中使用ajax()?

如何在django中的views.py中使用ajax()?
EN

Stack Overflow用户
提问于 2014-02-17 11:57:15
回答 1查看 1.4K关注 0票数 0

我这里有个小密码。

你能解释一下这段代码到底是干什么用的吗。请。

在脚本中,这里是ajax调用:

代码语言:javascript
运行
复制
    $.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

代码语言:javascript
运行
复制
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' )

提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2014-02-17 13:07:47

通常,$.ajax方法发送异步http请求。

你可以读到它,这里

第一个参数是url,我们在那里发送请求。

第二,请求方法可以是获取、发布、放置、删除等参见维基

第三个参数是带数据的键值字典,在服务器端使用.在django中,您可以在request.POST中访问它(如果是post请求)

第四个参数是函数,它在服务器成功返回响应时调用。您不需要此函数中的if语句,因为当请求失败或服务器不提供响应时,或者服务器返回错误(例如,类似于40*代码),该函数将不会被调用。

这个函数使用一个参数和服务器的响应。您需要处理这些数据,例如,向用户显示像Invalid data, please correct errors...Valid data. your request is in process now.这样的消息以及类似的人员。

最后一个参数是服务器响应的数据类型。jQuery足够聪明地为您解析JSON或html,因此在本例中,响应(成功函数的参数)是纯JS对象,从json反序列化。

在服务器端(Django视图)中,必须对请求的数据进行一些验证。用它做点什么。例如,将其保存到数据库中。当我必须实现ajax表单处理时,我会这样做:

代码语言:javascript
运行
复制
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中,类似这样的

代码语言:javascript
运行
复制
$.post('/url/to/view',
       function(json){
           if(json['success']){
               alert('Yahooo! Successfull request')
           }
           else{
               alert('Oooops. Looks like you send invalid data')
           }
       }, 'json')

祝好运!

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21828468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档