我想能够改变我的评论查询集没有页面刷新。以下是查询集:
comment_list = Comment.objects.filter().order_by('-score__upvotes')
new_comments_list = Comment.objects.filter().order_by('-timestamp')
那么我的模板是
^{pr2}$有没有方法可以使用AJAX(无页面刷新)将{% for comment in comment_list %}
更改为{
或者可能将comment_list
的值改为等于Comment.objects.filter().order_by('-timestamp')
?在
编辑
视图:
^{3}$ajax调用:
$('.comments_new').on('click', function() {
$.ajax({
type: 'GET',
url: '/new_comments/',
data: {
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val(),
},
success: function (data) {
console.log(data.comment_list); // undefined
}
})
});
我猜,你是在尝试在页面呈现时使用comment_list,在不修改的情况下使用ajax的new_comment_list
代码的问题是comment_list是一个queryset,当页面呈现时(在通过Django模板引擎之后),它在服务器端进行计算,Javascript无法理解queryset。它可以理解HTML或JSON。所以,您必须修改脚本,以便它为ajax请求返回HTML或JSON。在
我建议你把你的观点改写成:
^{pr2}$编写你的前端来生成这个HTML代码。 下面是一个链接,它对使用ajax进行渲染有更好的解释:Returning Rendered Html via Ajax
相关问题 更多 >
编程相关推荐