我正在制作我的第一个 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
网址对应的模板完全相同吗?如果是这样,您可能应该使用其中的一小部分来渲染列表或表格中的照片(或者以任何方式显示它们)。除此之外,还有一些方法可以帮助解决此问题。
在 Chrome 开发者工具中,确保您的 JavaScript 发送正确的数据。这可以通过验证网络选项卡中的参数并自由使用控制台日志来完成;
验证您的 View 实际上正在执行其应有的操作。我喜欢pdb。它非常适合这个。您可以编写测试,或进行打印语句或w/e。
验证您的前端是否正在接收数据。 Chrome 工具可以帮助您做到这一点。网络选项卡将让您看到响应。
我想更具体一些,但您没有提供具体细节。
为了帮助获得更好的答案,发布所有相关代码很重要。
关于javascript - AJAX 发布后 django 模板未重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360753/