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_frontend [2023/04/19 17:05] enric_mieza_sanchez [Auth Quickstart] |
django_frontend [2023/07/06 07:00] (actual) raquel_alaman_navas |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Django framework: frontend ====== | ====== Django framework: frontend ====== | ||
+ | |||
[[Django]] és un framework web basat en Python molt popular. Està orientat a la rapidesa de desenvolupament, | [[Django]] és un framework web basat en Python molt popular. Està orientat a la rapidesa de desenvolupament, | ||
Línia 24: | Línia 24: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[Integració de Django amb React]] | ||
La documentació de Django és molt bona, tant en les referències tècniques com el [[https:// | La documentació de Django és molt bona, tant en les referències tècniques com el [[https:// | ||
Línia 211: | Línia 212: | ||
===== Formularis ===== | ===== Formularis ===== | ||
- | Per veure com fer formularis | + | <WRAP tip> |
+ | Pel // | ||
+ | </ | ||
- | \\ | + | Referències sobre formularis: |
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
- | ===== Autenticació ===== | + | Altres: |
- | Pots llegir la doc oficial d' | + | * https:// |
- | * https:// | + | |
- | ==== Auth Quickstart ==== | + | Un formulari sempre implica diverses passes: |
- | Per anar ràpid, podem instal·lar | + | - Crear el formulari |
+ | | ||
+ | - Mostrar un resultat: pot ser senzill (operació OK), o complex (mostrar classificació). Sovint és molt pràctic fer una redirecció cap a una altre //view// i repartir | ||
- | <file python urls.py> | + | Cada pas abans descrit pot necessitar el seu **template** i la seva **view**. A la //view// crearem i filtrarem les dades adequades per passar-les al // |
- | urlpatterns = [ | + | |
- | path(" | + | |
- | path(" | + | |
- | ] | + | |
- | </file> | + | |
- | Això ens configurarà les rutes: | + | En Django tenim, al menys, 4 aproximacions per a realitzar formularis: |
- | < | + | - Plantilla |
- | accounts/login/ [name=' | + | - Utilitzar objecte |
- | accounts/logout/ [name='logout'] | + | - Utilitzar objectes més sofisticats com '' |
- | accounts/ | + | - Utilitzar [[https://docs.djangoproject.com/en/stable/topics/class-based-views/generic-display/|generic views com DetailView]] : les operacions tipus CRUD es poden fer amb aquests objectes genèrics. |
- | accounts/ | + | |
- | accounts/ | + | |
- | accounts/password_reset/done/ [name=' | + | |
- | accounts/reset/< | + | |
- | accounts/reset/done/ [name=' | + | |
- | </ | + | |
- | Només ens caldrà afegir plantilles per a '' | + | El processament del formulari és sempre similar (menys en el cas de les //generic views//). |
- | --> Plantilla login.html (la que surt a la doc oficial)# | + | \\ |
- | Aquesta és la [[https:// | + | |
- | <file html templates/ | + | <WRAP info> |
- | {% extends "base.html" %} | + | Podeu veure mes exemples a l' |
+ | </ | ||
- | {% block content %} | + | \\ |
- | {% if form.errors %} | + | ===== Autenticació ===== |
- | <p>Your username and password didn't match. Please try again.</p> | + | <WRAP info> |
- | {% endif %} | + | En el frontend és important utilitzar la [[Django Auth]]. |
+ | </WRAP> | ||
- | {% if next %} | + | \\ |
- | {% if user.is_authenticated %} | + | |
- | < | + | |
- | please login with an account that has access.</ | + | |
- | {% else %} | + | |
- | < | + | |
- | {% endif %} | + | |
- | {% endif %} | + | |
- | + | ||
- | <form method=" | + | |
- | {% csrf_token %} | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | <input type=" | + | |
- | <input type=" | + | |
- | </ | + | |
- | + | ||
- | {# Assumes you set up the password_reset view in your URLconf #} | + | |
- | < | + | |
- | + | ||
- | {% endblock %} | + | |
- | </ | + | |
- | <-- | + | |
- | + | ||
- | I la plantilla '' | + | |
- | + | ||
- | <file html registration/ | + | |
- | Benvingut {{user}}. | + | |
- | < | + | |
- | <a href="/ | + | |
- | </ | + | |
- | + | ||
- | A la //view// convé fixar-se en com utilitzar el **decorator @login_required**. Si no estem logats, ens farà fora i ens redirigirà cap al formulari de login. | + | |
- | + | ||
- | <file python views.py> | + | |
- | from django.contrib.auth.decorators import login_required | + | |
- | + | ||
- | @login_required | + | |
- | def profile(request): | + | |
- | return render(request," | + | |
- | </ | + | |