es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>
Tags:  , ,

Answer

  1. Avatar for 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:

    from django.http import HttpResponse
    def ajax_test(request):
        if request.is_ajax():
            message = "Esto es ajax"
        else:
            message = "No es ajax"
        return HttpResponse(message)
    

    Esto debería resolver tu problema.

Comments are closed.