Django is_ajax历史回归

时间:2013-12-17 17:00:32

标签: python ajax django jquery django-views

我写了一个Django视图,根据text/html响应以application/jsonrequest.is_ajax()。 到目前为止一切顺利,但是当我使用浏览器历史记录按钮时,我最终得到的是JSON响应,而不是HTML。

我无法弄清楚问题。这是真的,jQuery ajax请求在页面加载后得到相同的url,但这不应该在历史记录中结束,还是应该呢?

谢谢,乔

1 个答案:

答案 0 :(得分:6)

如果您根据request.is_ajax()发送不同的内容,则需要将Vary: X-Requested-With发送到浏览器。这样,浏览器就能够根据请求中X-Requested-With标头的值来区分这两种响应。你可以通过以下方式做到:

from django.views.decorators.vary import vary_on_headers

@vary_on_headers('X-Requested-With')
def yourview(request, ...):
    pass