Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
django_ninja [2025/03/21 16:18] 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 4: | Línia 4: | ||
| El principal avantatge és certa simplicitat per crear els endpoints. | El principal avantatge és certa simplicitat per crear els endpoints. | ||
| + | |||
| + | {{ django: | ||
| Referències: | Referències: | ||
| Línia 79: | Línia 81: | ||
| </ | </ | ||
| - | A part, també | + | \\ |
| + | |||
| + | ==== Ampliació del model d' | ||
| + | |||
| + | Per tal que la Token Auth funcioni, ens caldrà | ||
| + | |||
| + | Es pot fer de diverses maneres, una d' | ||
| + | |||
| + | Ull, perquè aquest canvi tindrà implicacions profundes i ens obligarà a esborrar la base de dades i recomençar l' | ||
| + | |||
| + | Comencem per canviar el model d' | ||
| <code python models.py> | <code python models.py> | ||
| Línia 89: | Línia 101: | ||
| </ | </ | ||
| - | I a '' | + | I a '' |
| <code python settings.py> | <code python settings.py> | ||
| - | AUTH_USER_MODEL = ' | + | AUTH_USER_MODEL = '<myapp>.Usuari' |
| </ | </ | ||
| Línia 99: | Línia 111: | ||
| (env) $ ./manage.py makemigrations | (env) $ ./manage.py makemigrations | ||
| (env) $ ./manage.py migrate | (env) $ ./manage.py migrate | ||
| + | |||
| + | Com que hem modificat l' | ||
| + | |||
| + | <file python admin.py> | ||
| + | from django.contrib import admin | ||
| + | from django.contrib.auth.admin import UserAdmin | ||
| + | |||
| + | class UsuariAdmin(UserAdmin): | ||
| + | fieldsets = UserAdmin.fieldsets + ( | ||
| + | (" | ||
| + | ' | ||
| + | }), | ||
| + | ) | ||
| + | readonly_fields = [" | ||
| + | |||
| + | admin.site.register(Usuari, | ||
| + | </ | ||
| <WRAP important> | <WRAP important> | ||
| - | Afegir canvis en el model d' | + | Afegir canvis en el model d' |
| - | Si no tenim dades de producció, el més fàcil és esborrar la base de dades, esborrar tots els arxius de migració, 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. |
| - | (env) $ ./manage.py makemigrations <nom_app> | + | |
| + | (env) $ rm -rf < | ||
| + | | ||
| + | (env) $ ./manage.py migrate | ||
| Una possible alternativa, | Una possible alternativa, | ||
| Línia 128: | Línia 160: | ||
| Per instal·lar jq es pot fer: | Per instal·lar jq es pot fer: | ||
| sudo apt install jq | sudo apt install jq | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== CORS : cridar l'API des de dominis creuats ===== | ||
| + | |||
| + | Passa sovint que el desplegament d'una API és independent del // | ||
| + | |||
| + | Una mesura bàsica de seguretat és que el navegador web es negui a fer crides a APIs d'un altre dominis per evitar possibles injeccions de codi que treguin les nostres dades personals cap a dominis externs. | ||
| + | |||
| + | Disposem d'una eina [[https:// | ||
| + | |||
| + | (env) $ pip install django-cors-headers | ||
| + | |||
| + | Bàsicament caldrà instal·lar el plugin '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | CORS_ALLOWED_ORIGINS = [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ]</ | ||
| + | |||