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:38]
enrique_mieza_sanchez [Objectes aniuats]
django_api [2025/02/05 23:49] (actual)
enric_mieza_sanchez [APIs amb Django]
Línia 10: Línia 10:
   * [[https://cacauet.org/wiki/index.php/Web_Services:_exemple_Escacs#Especificaci.C3.B3|Exemple API escacs]]   * [[https://cacauet.org/wiki/index.php/Web_Services:_exemple_Escacs#Especificaci.C3.B3|Exemple API escacs]]
   * [[https://cacauet.org/wiki/index.php/Serveis_web_amb_Laravel#Especificacions_d.27una_API|Exemple API vota karaoke]]   * [[https://cacauet.org/wiki/index.php/Serveis_web_amb_Laravel#Especificacions_d.27una_API|Exemple API vota karaoke]]
 +  * [[Django Ninja]] en aquesta wiki, per implementar APIs de forma similar a FastAPI.
  
-{{tag> #FpInfor #DawMp07 #DawMp07Uf4 #DawMp07Uf04 django web api framework rest }}+{{tag> #Daw #FpInfor #DawMp07 #DawMp07Uf4 #DawMp07Uf04 django web api framework rest }}
  
 \\ \\
Línia 21: Línia 22:
 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 31:
  
 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 52:
 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>
Línia 198: Línia 208:
 \\ \\
  
-==== Objectes aniuats ====+===== Objectes aniuats =====
 <WRAP todo> <WRAP todo>
 Exercici amb objectes aniuats: Exercici amb objectes aniuats:
Línia 208: Línia 218:
 \\ \\
  
-==== URLs personalitzades amb TokenAuthentication del REST framework ====+===== URLs personalitzades amb TokenAuthentication del REST framework =====
  
 Si volem fer les nostres pròpies URLs per a la API i volem afegir-hi algun dels mètdodes d'autenticació del REST framework, ho podem fer així: Si volem fer les nostres pròpies URLs per a la API i volem afegir-hi algun dels mètdodes d'autenticació del REST framework, ho podem fer així:
django_api.1646419137.txt.gz · Darrera modificació: 2022/03/04 18:38 per enrique_mieza_sanchez