====== Autenticació a Django ====== {{ django-logo.png?200 }} Pots llegir la doc oficial d'autenticació de Django: * https://docs.djangoproject.com/en/stable/topics/auth/default/ Aquest article continua d'altres articles d'aquesta wiki: * [[Django]] * [[Django Frontend]] * [[Django Lliga]] {{tag> #FpInfor #Daw #DawMp07 #DawMp07Uf02 #DawMp07Uf2 django framework python web}} ===== Auth Quickstart ===== 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]]) i totes les seves rutes. També afegirem ''accounts/profile/'' que és la pàgina per defecte un cop fer login: urlpatterns = [ path("accounts/", include("django.contrib.auth.urls")), path("accounts/profile/", profile, name="profile"), ] Això ens configurarà les rutes: accounts/login/ [name='login'] accounts/logout/ [name='logout'] accounts/password_change/ [name='password_change'] accounts/password_change/done/ [name='password_change_done'] accounts/password_reset/ [name='password_reset'] accounts/password_reset/done/ [name='password_reset_done'] accounts/reset/// [name='password_reset_confirm'] accounts/reset/done/ [name='password_reset_complete'] Només ens caldrà afegir plantilles per a ''login.html'' i ''profile.html'', i tindrem a punt el sistema complert. --> Plantilla login.html (la que surt a la doc oficial)# Aquesta és la [[https://docs.djangoproject.com/en/latest/topics/auth/default/#module-django.contrib.auth.views|plantilla de la doc oficial]] però la podeu personalitzar: {% extends "base.html" %} {% block content %} {% if form.errors %}

Your username and password didn't match. Please try again.

{% endif %} {% if next %} {% if user.is_authenticated %}

Your account doesn't have access to this page. To proceed, please login with an account that has access.

{% else %}

Please login to see this page.

{% endif %} {% endif %}
{% csrf_token %}
{{ form.username.label_tag }} {{ form.username }}
{{ form.password.label_tag }} {{ form.password }}
{# Assumes you set up the password_reset view in your URLconf #}

Lost password?

{% endblock %}
<-- \\ ===== Profile view ===== Un cop logats ens redirigirà cap a ''/accounts/profile/'', però de nou aquesta //view// no està definida per defecte. Posem aquí un exemple mínim de la //view// + //template//: Benvingut {{user}}.
Logout
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//. from django.contrib.auth.decorators import login_required @login_required def profile(request): return render(request,"registration/profile.html") A partir d'ara, seria convenient particularitzar les plantilles de per ''password_reset'', ''password_change'', etc, però al menys ja tenim les //views// creades oficials, la qual cosa ens estalviarà molta feina. \\ ===== Exercicis ===== Implementa l'autenticació del //frontend// en el teu projecte. Si no n'has fet cap, pots seguir [[Django Lliga]]. Afegeix un //link// de canvi de contrasenya al ''profile.html''. Canvia els templates per defecte del canvi de contrasenya, de manera que a l'acabar el canvi ens ofereixi tornar a la pàgina de //profile//. \\