javascript - AJAX 发布后 django 模板未重新加载

标签 javascript python ajax django

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

他们可以通过单击按钮请求查看更多照片。单击此按钮将向服务器发送 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"
        });
    });
});

最佳答案

对我来说最可疑的是你说

once again passes the photos to the same template for display.

这与您的 /photo 网址对应的模板完全相同吗?如果是这样,您可能应该使用其中的一小部分来渲染列表或表格中的照片(或者以任何方式显示它们)。除此之外,还有一些方法可以帮助解决此问题。

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

  2. 验证您的 View 实际上正在执行其应有的操作。我喜欢pdb。它非常适合这个。您可以编写测试,或进行打印语句或w/e。

  3. 验证您的前端是否正在接收数据。 Chrome 工具可以帮助您做到这一点。网络选项卡将让您看到响应。

我想更具体一些,但您没有提供具体细节。

为了帮助获得更好的答案,发布所有相关代码很重要。

关于javascript - AJAX 发布后 django 模板未重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360753/

相关文章:

javascript - 在html的选择元素中选择后更改所选值的字体大小

javascript - 使用文件阅读器读取图像的宽度?

python - CLI 命令的 boto 解释

javascript - 如何将实时数据发送到从 iOS 应用程序加载到 UIWebView 中的页面

javascript - 访问控制允许来源 - 不工作

jquery - 如何从子窗口关闭 fancybox?

javascript - 根据第一个真实条件评估表达式

javascript - Expressjs ejs fn.apply 错误 'View is not a constructor'

python - 启动具有输入参数的另一个脚本的多个实例的脚本

python - 访问命名空间