我正在嘗試在 django 中學習 ajax,但是當我運行這個簡單的測驗時出現了這個錯誤,我找不到原因,我的 django 版本是 4.0
AttributeError: 'WSGIRequest' object has no attribute 'is_ajax'
查看.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)
網址.py
urlpatterns = [
path('',views.home,name='home'),
path('ajax_test/', views.ajax_test, name='ajax_test')
]
索引.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>
uj5u.com熱心網友回復:
來自3.1的發行說明
該
HttpRequest.is_ajax()方法已被棄用,因為它依賴于 jQuery 特定的表示 AJAX 呼叫的方式,而當前的用法傾向于使用 JavaScript Fetch API。根據您的用例,您可以撰寫自己的 AJAX 檢測方法,或者HttpRequest.accepts()如果您的代碼依賴于客戶端 Accept HTTP 標頭,則使用新方法。
即使它已被棄用,您也可以創建一個自定義函式來檢查請求型別,
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388230.html
