Django is_ajax 历史回溯
Posted
技术标签:
【中文标题】Django is_ajax 历史回溯【英文标题】:Django is_ajax history back 【发布时间】:2014-01-05 13:45:55 【问题描述】:我写了一个 Django 视图,它根据 request.is_ajax()
响应 text/html
或 application/json
。
到目前为止一切顺利,但是当我使用浏览器历史按钮时,我最终得到的是 JSON 响应而不是 HTML。
我无法找出问题所在。确实,jQuery ajax 请求在页面加载后获得了相同的 url,但这不应该出现在历史记录中,还是应该这样?
谢谢,乔
【问题讨论】:
我的直觉是浏览器缓存是实际问题。如果你回去重新加载,它会加载html版本吗?同样,如果您在返回之前直接清除浏览器缓存,它会加载 HTML 还是 JSON? 【参考方案1】:如果根据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
【讨论】:
以上是关于Django is_ajax 历史回溯的主要内容,如果未能解决你的问题,请参考以下文章