【问题标题】:Django is_ajax history backDjango is_ajax 历史回溯
【发布时间】:2014-01-05 13:45:55
【问题描述】:

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

我无法找出问题所在。确实,jQuery ajax 请求在页面加载后获得了相同的 url,但这不应该出现在历史记录中,还是应该这样?

谢谢,乔

【问题讨论】:

  • 我的直觉是浏览器缓存是实际问题。如果你回去重新加载,它会加载html版本吗?同样,如果您在返回之前直接清除浏览器缓存,它会加载 HTML 还是 JSON?

标签: python ajax django jquery django-views


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2016-09-01
    • 2010-12-28
    • 2020-12-17
    相关资源
    最近更新 更多