Tengo una solicitud para usar Ajax para obtener datos de las vistas de Django. Este proyecto fue generado a través de cookiecutter Aquí está mi código:
config/urls.py :
# API URLS urlpatterns += [ # API base url path("api/", include("config.api_router")),] ./config/api_router.py :
from django.conf import settings from django.urls import path from rest_framework.routers import DefaultRouter, SimpleRouter from project.users.api.views import UserViewSet from app import views if settings.DEBUG: router = DefaultRouter() else: router = SimpleRouter() router.register("users", UserViewSet) app_name = "api" urlpatterns = router.urls urlpatterns += [ path("chart-data", views.chart_data), ] app/views.py :
from django.shortcuts import render from django.http import JsonResponse def chart_data(request): return render(request, 'pages/home.html') def click(request): data_for_ajax = { 'a': {1: 1, 2: 2}, 'b': {3: 3}, 'c': {4: 4, 5: 5} } return JsonResponse(data_for_ajax) project/templates/pages/home.html :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script defer src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script> function click() { $.ajax({ type: "GET", url: "api/chart-data", success: function(data) { console.log(data); } }) </script> </head> <body> <button onclick="click()">Click me</button> </body>Cuando accedí a http://localhost:8000/api/chart-data e hice clic en el botón "Hacer clic en mí", no hay nada en la consola y no hay ningún error.