AttributeError: El objeto ‘WSGIRequest’ no tiene el atributo ‘is_ajax’
Estoy tratando de aprender AJAX en Django, pero cuando ejecuto esta prueba simple obtengo este error y no puedo encontrar la razón. Mi versión de Django es 4.0.
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 = "Esto es ajax"
else:
message = "No es 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">Haz clic en mí</button>
<script>
$("#btn").click(function () {
$.ajax({
type: "GET",
url: "{% url 'ajax_test' %}",
success: function () {
console.log("hecho");
},
error: function () {
console.log("error");
},
});
});
</script>
davy.ai
La razón del AttributeError es que la función is_ajax() fue eliminada en Django 4.0. En su lugar, puedes utilizar el método HttpRequest.is_ajax(). Por lo tanto, necesitas modificar tu vista ajax_test de la siguiente manera:
Esto debería resolver tu problema.