django模板在AJAX发布后没有重新加载

时间:2012-09-10 23:21:45

标签: javascript python ajax django

我正在制作我的第一个Django应用程序并遇到了一些AJAX问题。在我的网站上,用户可以看到一个照片库。要访问此页面,他们只需要转到/照片。照片视图会计算要显示的照片,并将照片传递给模板进行渲染。

他们可以点击按钮请求查看更多照片。单击此按钮可向服务器发送AJAX请求。服务器计算要显示的一组新照片,然后再次将照片传递到同一模板以供显示。唯一的问题是屏幕上的照片永远不会改变。

我确认服务器正在计算新照片。不幸的是,许多应该发生的事情实际上从未发生过。首先,使用Chrome开发人员工具,我可以看到照片文件永远不会从服务器发送到浏览器。此外,DOM从不更新src属性以引用新照片。为了让这些事情发生,我需要做些什么?

谢谢。

编辑:

一些代码:

#The python view summarized
def photos:
    photoList = GetListOfPhotos() #Returns photo objects.  These objects have a file field which is access from the template.
        return render(request,
              'photos.html', 
             {'photoList': photoList}, 
              context_instance=RequestContext(request)
             )

#AJAX request
$(document).ready(function(){
    $("#right-arrow").click(function(event) {
        $.post("/photos/", {"arrow" : "right"
        });
    });
});

1 个答案:

答案 0 :(得分:0)

对我来说最可疑的是你说

  

再次将照片传递到同一模板进行显示。

这是您的/photo网址对应的完全相同的模板吗?如果它是你应该使用它的一小部分只是为了在列表或表格中呈现照片(或者你显示它们)除此之外,有一些事情可以帮助解决这个问题。

  1. 在Chrome开发者工具中,请确保您的javascript正在发送正确的数据。这可以通过在网络选项卡中验证你的参数,以及通过自由使用控制台日志来完成;

  2. 验证您的视图实际上是在做它应该做的事情。我喜欢pdb。这是完美的。您可以编写测试,或制作打印声明或w / e。

  3. 确认您的前端正在接收数据。 Chrome工具可以帮助您完成此操作。网络标签可让您查看回复。

  4. 我想更具体,但你没有提供具体细节。

    为了帮助更好地回答,重要的是发布所有相关代码。