bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_frontend

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_frontend [2023/04/19 16:28]
enric_mieza_sanchez [Formularis]
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, per això se'l coneix com "The web framework for perfectionists with deadlines". [[Django]] és un framework web basat en Python molt popular. Està orientat a la rapidesa de desenvolupament, per això se'l coneix com "The web framework for perfectionists with deadlines".
  
Línia 24: Línia 24:
   * [[https://docs.djangoproject.com/en/stable/topics/forms/|Treballant amb Forms]]   * [[https://docs.djangoproject.com/en/stable/topics/forms/|Treballant amb Forms]]
   * [[https://stackoverflow.com/questions/1622793/django-cookies-how-can-i-set-them|Cookies en Django]]   * [[https://stackoverflow.com/questions/1622793/django-cookies-how-can-i-set-them|Cookies en Django]]
 +  * [[Integració de Django amb React]]
  
 La documentació de Django és molt bona, tant en les referències tècniques com el [[https://docs.djangoproject.com/en/stable/intro/tutorial01/|tutorial oficial de Django]], així que seguirem aquests per anar aprofundint. La documentació de Django és molt bona, tant en les referències tècniques com el [[https://docs.djangoproject.com/en/stable/intro/tutorial01/|tutorial oficial de Django]], així que seguirem aquests per anar aprofundint.
Línia 211: Línia 212:
  
 ===== Formularis ===== ===== Formularis =====
-Per veure com fer formularis pots mirar els exemples que hem posat a l'article [[Django Lliga#formularis|Django Lliga: formularis]].+<WRAP tip> 
 +Pel //frontend// ens serà molt important la potent gestió de formularis de Django. 
 +</WRAP>
  
-\\+Referències sobre formularis: 
 +  * [[https://docs.djangoproject.com/en/stable/topics/forms/|Forms]] 
 +  * [[https://docs.djangoproject.com/en/stable/topics/forms/modelforms/|ModelForms]] 
 +  * [[https://docs.djangoproject.com/en/stable/ref/models/fields/|Fields]] : camps del Form 
 +  * [[https://docs.djangoproject.com/en/stable/ref/forms/fields/#fields-which-handle-relationships|Camps amb FKs]] 
 +  * [[https://docs.djangoproject.com/en/stable/topics/class-based-views/generic-display/|Generic Views]]: per operacions tipus CRUD genèriques es poden crear formularis molt ràpidament, ja que ens genera tant el codi de la //view// com el //template//.
  
-===== Autenticació ===== +Altres
-Pots llegir la doc oficial d'autenticació de Django+  * https://docs.djangoproject.com/en/stable/topics/http/shortcuts/
-  * https://docs.djangoproject.com/en/latest/topics/auth/+
  
-==== Auth Quickstart ==== +Un formulari sempre implica diverses passes: 
-Per anar ràpid, podem instal·lar el model sencer ''auth'' ([[https://docs.djangoproject.com/en/latest/topics/auth/default/#module-django.contrib.auth.views|llegir doc]]) totes les seves rutes:+  - Crear el formulari (pot ser senzill o més complex, i necessitarà codi). 
 +  - Processar les dades del 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 la complexitat en diverses parts del codi.
  
-<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 //template//.
-urlpatterns = [ +
-    path("accounts/", include("django.contrib.auth.urls")), +
-+
-</file>+
  
-Això ens configurarà les rutes+En Django tenim, al menys, 4 aproximacions per a realitzar formularis
-<code> +  - Plantilla //hardcoded// (HTML): dona més feina però és fàcil de modificar amb coneixements bàsics de HTML. 
-accounts/login[name='login'+  - Utilitzar objecte ''Form'' de Django. Això ens facilita la renderització i el manteniment. 
-accounts/logout[name='logout'+  - Utilitzar objectes més sofisticats com ''ModelForm'' que a partir d'un model ens generarà automàticament el formulari. 
-accounts/password_change/ [name='password_change'] +  - 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/password_change/done/ [name='password_change_done'+
-accounts/password_reset/ [name='password_reset'] +
-accounts/password_reset/done[name='password_reset_done'+
-accounts/reset/<uidb64>/<token>[name='password_reset_confirm'+
-accounts/reset/done/ [name='password_reset_complete'] +
-</code>+
  
-Només ens caldrà afegir plantilles per a ''login.html'', i tindrem a punt el sistema complert.+El processament del formulari és sempre similar (menys en el cas de les //generic views//).
  
-<file html templates/registration/login.html> +\\
-{% extends "base.html" %}+
  
-{% block content %}+<WRAP info> 
 +Podeu veure mes exemples a l'article [[Django Lliga#formularis|Django Lliga: formularis]]. 
 +</WRAP>
  
-{% if form.errors %} +\\
-<p>Your username and password didn't match. Please try again.</p> +
-{% endif %}+
  
-{% if next %} +===== Autenticació ===== 
-    {% if user.is_authenticated %} +<WRAP info
-    <p>Your account doesn't have access to this page. To proceed, +En el frontend és important utilitzar la [[Django Auth]]
-    please login with an account that has access.</p> +</WRAP>
-    {% else %} +
-    <p>Please login to see this page.</p> +
-    {% endif %} +
-{% endif %}+
  
-<form method="post" action="{% url 'login' %}"> +\\
-{% csrf_token %} +
-<table> +
-<tr> +
-    <td>{{ form.username.label_tag }}</td> +
-    <td>{{ form.username }}</td> +
-</tr> +
-<tr> +
-    <td>{{ form.password.label_tag }}</td> +
-    <td>{{ form.password }}</td> +
-</tr> +
-</table> +
- +
-<input type="submit" value="login"> +
-<input type="hidden" name="next" value="{{ next }}"> +
-</form> +
- +
-{# Assumes you set up the password_reset view in your URLconf #} +
-<p><a href="{% url 'password_reset' %}">Lost password?</a></p> +
- +
-{% endblock %} +
-</file>+
  
django_frontend.1681921733.txt.gz · Darrera modificació: 2023/04/19 16:28 per enric_mieza_sanchez