bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_ninja

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_ninja [2026/03/24 16:54]
enric_mieza_sanchez [Autenticació]
django_ninja [2026/04/09 16:01] (actual)
enric_mieza_sanchez [CORS : cridar l'API des de dominis creuats]
Línia 81: Línia 81:
 </code> </code>
  
-A parttambé caldrà afegir la columna ''auth_token'' al model ''Usuari'' que cal personalitzar:+\\ 
 + 
 +==== Ampliació del model d'usuari ==== 
 + 
 +Per tal que la Token Auth funcioniens caldrà que l'usuari emmagatzemi els //tokens// en algun lloc. 
 + 
 +Es pot fer de diverses maneres, una d'elles és afegir la columna ''auth_token'' al model ''Usuari'' que cal personalitzar, derivant de ''AbstractUser''.  
 + 
 +Ull, perquè aquest canvi tindrà implicacions profundes i ens obligarà a esborrar la base de dades i recomençar l'historial de migracions. Ho veurem mes tard. 
 + 
 +Comencem per canviar el model d'usuari i el redefinim a ''models.py'':
  
 <code python models.py> <code python models.py>
Línia 101: Línia 111:
   (env) $ ./manage.py makemigrations   (env) $ ./manage.py makemigrations
   (env) $ ./manage.py migrate   (env) $ ./manage.py migrate
 +
 +Com que hem modificat l'usuari del sistema, ara no es visualitzarà a l'admin panel. Per visualitzar-lo correctament, apliqueu aquest ''UsuariAdmin'' a ''admin.py'':
 +
 +<file python admin.py>
 +from django.contrib import admin
 +from django.contrib.auth.admin import UserAdmin
 +
 +class UsuariAdmin(UserAdmin):
 +    fieldsets = UserAdmin.fieldsets + (
 +            ("Altres dades (API auth)", {
 +                'fields': ('auth_token',),
 +            }),
 +    )
 +    readonly_fields = ["auth_token",]
 +
 +admin.site.register(Usuari,UsuariAdmin)
 +</file>
  
 <WRAP important> <WRAP important>
-Afegir canvis en el model d'usuari quan un projecte ja té dades de producció és problemàtic, com a mínim. **Es recomana sempre crear un model d'usuari personalitzat** (derivat d'AbstractUser) **des del principi del projecte** per poder afegir funcionalitats com aquesta (afegir token a l'usuari) quan sigui necessari.+Afegir canvis en el model d'usuari quan un projecte ja té dades de producció és problemàtic, com a mínim. **Es recomana sempre crear un model d'usuari personalitzat** (derivat d'''AbstractUser'') **des del principi del projecte** per poder afegir funcionalitats com aquesta (afegir token a l'usuari) quan sigui necessari.
  
 **Si no tenim dades de producció, el més fàcil és esborrar la base de dades i arxius de migracions**, i tornar a crear-los. **Si no tenim dades de producció, el més fàcil és esborrar la base de dades i arxius de migracions**, i tornar a crear-los.
Línia 143: Línia 170:
  
 Disposem d'una eina [[https://pypi.org/project/django-cors-headers/|Django CORS Headers]] amb la que podem avisar Django que hi ha determinats dominis que sí poden fer crides a l'API. Disposem d'una eina [[https://pypi.org/project/django-cors-headers/|Django CORS Headers]] amb la que podem avisar Django que hi ha determinats dominis que sí poden fer crides a l'API.
 +
 +  (env) $ pip install django-cors-headers
  
 Bàsicament caldrà instal·lar el plugin ''django-cors-headers'' i ajustar les variables a ''settings.py'': Bàsicament caldrà instal·lar el plugin ''django-cors-headers'' i ajustar les variables a ''settings.py'':
django_ninja.1774371254.txt.gz · Darrera modificació: 2026/03/24 16:54 per enric_mieza_sanchez