Python Django的历史又回来了

Python Django的历史又回来了,python,ajax,django,jquery,django-views,Python,Ajax,Django,Jquery,Django Views,我编写了一个Django视图,它根据请求响应text/html或application/json。is_ajax()。 到目前为止还不错,但当我使用浏览器历史记录按钮时,最终得到的是JSON响应,而不是HTML 我想不出这个问题。的确,jqueryajax请求在加载页面后会得到相同的url,但这不应该出现在历史记录中,或者应该出现在历史记录中 谢谢,Joe如果您根据请求发送不同的内容。is_ajax(),您需要将Vary:X-request-With发送到浏览器。这样,浏览器将能够根据请求上的X

我编写了一个Django视图,它根据
请求响应
text/html
application/json
。is_ajax()
。 到目前为止还不错,但当我使用浏览器历史记录按钮时,最终得到的是JSON响应,而不是HTML

我想不出这个问题。的确,jqueryajax请求在加载页面后会得到相同的url,但这不应该出现在历史记录中,或者应该出现在历史记录中


谢谢,Joe

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

from django.views.decorators.vary import vary_on_headers

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

我的直觉是浏览器缓存才是真正的问题。如果返回并重新加载,它是否加载html版本?同样,如果在返回之前直接清除浏览器缓存,它是否加载HTML或JSON?