2013-12-17 63 views
1

我写了一个Django视图,回应ether a text/htmlapplication/json,具体取决于request.is_ajax()。 到目前为止这么好,但是当我使用我的浏览器历史按钮时,我最终得到了一个JSON响应而不是HTML。Django is_ajax的历史回

我找不出这个问题。这是真的,jQuery ajax请求在页面加载后获得相同的url,但这不应该在历史中结束,或者它应该?

谢谢,乔

+1

我的预感是浏览器缓存是真正的问题。如果你回去重新加载,它会加载html版本吗?同样,如果您在返回之前直接清除浏览器缓存,它是否会加载HTML或JSON? – sk1p

回答

5

如果根据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 
+0

谢谢sk1p,工作得很好。 – codingjoe