我认为这是不同于其他问题,我已经检查了答案,仍然没有运气。感谢您的帮助:Django评论 - Ajax和CSRF失败
我有一个新闻项目列表(如Facebook的饲料),并有每个附加的评论表(使用django.contrib.comments应用程序)。它正常工作正常。
但是,我在页面上使用了一种AJAX“无限滚动” - 当您滚动时,它会通过AJAX加载下一组新闻项目和相关评论表单。新加载的新闻项目的评论表单不起作用(CSRF验证失败)。
很明显,为什么 - {%csrf_token%}没有传递给返回的JSON响应,所以新加载的评论表单没有CSRF数据。
我已经尝试使用Django页面上的设置cookie方法(https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#ajax),但似乎不工作,也不会尝试@csrf_exempt装饰器来完全排除CSRF。
任何建议如何我可以传递一个csrf_token以及返回的JSON响应?还是有其他选择吗?
这里的观点:
def my_view(request):
# the normal view gets a queryset of all Info items and returns them
infos = Info.objects.all()
....
# here's the AJAX part
if request.GET.get('xhr') and page > 1:
infos = paginator.page(int(request.GET.get('page')))
objects_list = []
for object in infos:
objects_list.append(render_to_string('list/snippets/feed_li.html', {
'object': object,
}))
json = simplejson.dumps(objects_list, cls=DjangoJSONEncoder)
return HttpResponse(json, mimetype='application/json')