Django is_ajax历史回归

cod*_*joe 2 python django ajax jquery django-views

我写了一个Django视图,响应以太text/html或一个application/json依赖request.is_ajax().到目前为止一切都那么好,但是当我使用浏览器历史记录按钮时,我最终得到的是JSON响应,而不是HTML.

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

谢谢,乔

sk1*_*k1p 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
Run Code Online (Sandbox Code Playgroud)