bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_api

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
django_api [2022/03/04 18:40]
enrique_mieza_sanchez [Objectes aniuats]
django_api [2023/04/14 17:06] (actual)
enric_mieza_sanchez [APIs simples amb JsonResponse]
Línia 21: Línia 21:
 Aquestes crides AJAX es poden resoldre amb una simple [[https://docs.djangoproject.com/en/4.0/ref/request-response/#jsonresponse-objects|JsonResponse]]. Aquestes crides AJAX es poden resoldre amb una simple [[https://docs.djangoproject.com/en/4.0/ref/request-response/#jsonresponse-objects|JsonResponse]].
  
-Per exemple, seguint el tutorial de Django "polls", podem implementar una //view// que ens retorni les dades de les ''Question'' en format JSON d'aquesta manera:+Per exemple, seguint el tutorial de Django "polls", podem implementar una //view// que ens retorni les dades de les ''Question'' en format JSON d'aquesta manera. Per distingir de les views HTML farem un arxiu ''api.py'' que sabem que retornarà objectes JSON:
  
-<file python views.py>+<file python api.py>
 from django.http import JsonResponse from django.http import JsonResponse
 from polls.models import * from polls.models import *
Línia 30: Línia 30:
  
 def get_questions(request): def get_questions(request):
-    qs = Question.objects.all().values()+    jsonData list( Question.objects.all().values()
     return JsonResponse({     return JsonResponse({
             "status": "OK",             "status": "OK",
-            "questions":list(qs)+            "questions": jsonData,
         }, safe=False)         }, safe=False)
 </file> </file>
 +
 +<WRAP info>
 +Observa bé què cal per poder serialitzar els objectes del model:
 +  jsonData = list( Question.objects.all().values() )
 +
 +  - Tenim un queryset de Questions
 +  - Seleccionem només els valors amb ''.values()''
 +  - Transformem en una llista amb ''list( ... )''
 +</WRAP>
  
 Recorda que abans caldrà que implementis un //endpoint//, per exemple a ''/get_questions'' dins de ''urls.py'': Recorda que abans caldrà que implementis un //endpoint//, per exemple a ''/get_questions'' dins de ''urls.py'':
Línia 42: Línia 51:
 from django.urls import path from django.urls import path
  
-from . import views+from . import views, api
  
 urlpatterns = [ urlpatterns = [
     path('', views.index, name='index'),     path('', views.index, name='index'),
     #...     #...
-    path('get_questions', views.get_questions, name='get_questions'),+    path('get_questions', api.get_questions, name='get_questions'),
 ] ]
 </file> </file>
django_api.1646419222.txt.gz · Darrera modificació: 2022/03/04 18:40 per enrique_mieza_sanchez