HttpRequest.is_ajax() 从 3.1 版开始不推荐使用。
如果页面是从浏览器请求的,并且好像JsonResponse是从 javascript 或以编程方式调用的,我想返回 html 。
我正在寻求有关如何做到这一点的指导。
https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.HttpRequest.is_ajax
检查HTTP_X_REQUESTED_WITH标题
def sample_view(request):
is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
Run Code Online (Sandbox Code Playgroud)
该
HttpRequest.is_ajax()方法已被弃用,因为它依赖于 jQuery 特定的表示 AJAX 调用的方式,而当前的用法倾向于使用 JavaScript Fetch API。根据您的用例,您可以编写自己的 AJAX 检测方法,或者HttpRequest.accepts()如果您的代码依赖于客户端 Accept HTTP 标头,则使用新方法。
有趣的是——引用的弃用简介只能让你成功一半。弃用文本、文档和发行说明中都没有说明如何“使用新HttpRequest.accepts方法”进行替换。HttpRequest.is_ajax
所以,这里是:if request.accepts("application/json")
(至少这对我有用。)
小智 6
代替:
if request.is_ajax():
Run Code Online (Sandbox Code Playgroud)
帮助过我:
if request.headers.get('x-requested-with') == 'XMLHttpRequest':
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |