Authentifizierung & Registrierung ********************************* Aus verschiedenen Gründen ist eine Authentifizierung im Frontend sinnvoll. Zum Beispiel sollen Benutzer selbst Inhalte erstellen, Lesezeichen anlegen oder Bewertungen abgeben können. Django stellt in ``django.contrib.auth`` eine Applikation zur Authentifizierung zur Verfügung. Diese wird zum Beispiel auch im Admin eingesetzt. Eine weitere Applikation erstellen ================================== Da ``django.contrib.auth`` etwas erweitert werden muss erstellen wir zuerst eine eigene Applikation mit dem Namen ``userauth``: .. code-block:: bash $ python manage.py startapp userauth Projekt konfigurieren ===================== Nun müssen wir das Projekt so konfigurieren, dass unsere neue Applikation auch benutzt wird. Dazu erweiterst du zuerst die Datei :file:`settings.py`:: INSTALLED_APPS = ( ... 'userauth', ) LOGIN_URL = '/benutzer/anmelden/' LOGOUT_URL = '/benutzer/abmelden/' LOGIN_REDIRECT_URL = '/' Die drei neuen Konfigurationswerte haben folgende Aufgaben: * ``LOGIN_URL``: Dieser URL wird aufgerufen, wenn ein Login erforderlich ist * ``LOGOUT_URL``: Das Gegenstück zu ``LOGIN_URL`` * ``LOGIN_REDIRECT_URL``: Wenn nach einem erfolgreichen Login kein URL angegeben wurde wird zu diesem URL weitergeleitet Außerdem können wir schon die URLs einbinden, die wir später für unsere neue Applikation erzeugen werden. Dazu erweiterst du die Datei :file:`urls.py` im Konfigurationsverzeichnis nach dem Eintrag für den Admin um folgende Zeile:: url(r'^benutzer/', include('userauth.urls')), Authentifizierung mit der Applikation ``userauth`` ================================================== URLConf erstellen ----------------- Nun erstellen wir die Datei :file:`urls.py` im Verzeichnis :file:`userauth`:: from django.conf.urls import patterns, include, url urlpatterns = patterns('django.contrib.auth.views', url(r'^anmelden/$', 'login', {'template_name': 'userauth/login.html'}, name='userauth_login'), url(r'^abmelden/$', 'logout', {'next_page': '/'}, name='userauth_logout'), url(r'^passwort-aendern/$', 'password_change', {'template_name': 'userauth/password_change_form.html'}, name='userauth_password_change'), url(r'^passwort-geaendert/$', 'password_change_done', {'template_name': 'userauth/password_change_done.html'}, name='userauth_password_change_done') ) Sie enthält die URLs für Login und Logout sowie zum Ändern des Passworts. Dabei werden die Views aus ``django.contrib.auth.views`` benutzt. Sie werden aber mit eigenen Templates gerendert. .. _toggle_login: Templates anlegen ----------------- Als nächstes Erstellen wir ein Template für das Login in :file:`userauth/templates/userauth/login.html`: .. code-block:: html+django {% extends "base.html" %} {% block title %}{{ block.super }} - Login{% endblock %} {% block toggle_login %}{% endblock %} {% block content %}
{% endblock %} Neu ist hier das Formular. Für Formulare in Django muss man die ``