AttributeError:“WSGIRequest”对象没有属性“is_ajax”
Posted
技术标签:
【中文标题】AttributeError:“WSGIRequest”对象没有属性“is_ajax”【英文标题】:AttributeError: 'WSGIRequest' object has no attribute 'is_ajax' 【发布时间】:2022-01-21 22:19:17 【问题描述】:我试图在 django 中学习 ajax,但是当我运行这个简单的测试时,我得到了这个错误,我找不到原因, 我的 django 版本是 4.0
AttributeError: 'WSGIRequest' object has no attribute 'is_ajax'
view.py
from django.shortcuts import render, HttpResponse
def home(request):
return render(request,'myapp/index.html')
def ajax_test(request):
if request.is_ajax():
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
urls.py
urlpatterns = [
path('',views.home,name='home'),
path('ajax_test/', views.ajax_test, name='ajax_test')
]
index.html
<button id="btn">click me!</button>
<script>
$("#btn").click(function ()
$.ajax(
type: "GET",
url: "% url 'ajax_test' %",
success: function ()
console.log("done");
,
error: function ()
console.log("error");
,
);
);
</script>
【问题讨论】:
【参考方案1】:来自Release Notes of 3.1
HttpRequest.is_ajax()
方法已被弃用,因为它依赖于 jQuery 特定的方式来表示 AJAX 调用,而当前使用倾向于使用 javascript Fetch API。根据您的用例,您可以编写自己的 AJAX 检测方法,或者如果您的代码依赖于客户端 Accept HTTP 标头,则使用新的HttpRequest.accepts()
方法。
即使它已被弃用,您也可以创建一个自定义函数来检查请求类型,
def is_ajax(request):
return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
并在视图中的任何位置使用,
from django.shortcuts import HttpResponse
def is_ajax(request):
return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
def ajax_test(request):
if is_ajax(request=request):
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
【讨论】:
以上是关于AttributeError:“WSGIRequest”对象没有属性“is_ajax”的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError: 'RDD' 对象没有属性 'show'
AttributeError:“NumpyArrayIterator”对象没有属性“类”
AttributeError:模块 'dbus' 没有属性 'lowlevel'