I modelli predefiniti di django-allauth sembrano ottusi e potrebbero non soddisfare le tue esigenze. Ecco come puoi sovrascriverli.
django-allauth è un pacchetto Django che ti consente di creare un sistema di autenticazione per le tue app Django in modo rapido e semplice. Dispone di modelli integrati per consentirti di concentrarti su altre parti importanti della tua app.
Sebbene i modelli integrati siano utili, ti consigliamo di modificarli perché non hanno la migliore interfaccia utente.
Come installare e configurare django-allauth
Seguendo alcuni semplici passaggi, puoi installare facilmente django-allauth nel tuo progetto Django.
- Puoi installare django-allauth pacchetto utilizzando il gestore pacchetti Pip:
pip install django-allauth
- Nel file delle impostazioni del tuo progetto, aggiungi queste app alle app installate:
INSTALLED_APPS = [
Add your other apps here# Djang-allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount', # add this if you want to enable social authentication
] - Aggiungi backend di autenticazione al file delle impostazioni:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
] - Aggiungi un ID sito al tuo progetto:
SITE_ID = 1
- Configura gli URL per django-allauth:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Se esegui correttamente le configurazioni di cui sopra, dovresti vedere un modello come questo quando accedi a http://127.0.0.1:8000/accounts/signup/:
Puoi visualizzare l'elenco degli URL disponibili accedendo a http://127.0.0.1:8000/accounts/ con DEBUG=Vero nel file delle impostazioni.
Come sovrascrivere il modello di accesso in django-allauth
Per prima cosa devi configurare il tuo modelli cartella se non lo hai fatto. Apri il file delle impostazioni e vai al file MODELLI elenco. Al suo interno, individua il DIR list e modificarlo in questo modo:
'DIRS': [BASE_DIR/'templates'],
Assicurati di avere un file modelli cartella nella directory principale del tuo progetto. Puoi sovrascrivere il modello di accesso predefinito in django-allauth seguendo questi passaggi successivi.
Passaggio 1: crea i file modello
Nel tuo modelli cartella, crea una nuova cartella chiamata account per contenere i modelli relativi a django-allauth.
I modelli di registrazione e accesso dovrebbero essere registrazione.html E login.html rispettivamente. Puoi determinare il nome corretto del modello aprendo il tuo Ambiente virtuale Python e navigare verso Lib > pacchetti del sito > allauth > modelli > account cartella per trovare i modelli. Dovresti leggere il codice per capire come funzionano i modelli. Ad esempio, il modello di accesso contiene questo codice:
Passaggio 2: aggiungi il codice HTML ai file modello
Dopo aver creato i tuoi file, dovresti aggiungere il codice HTML personalizzato per il tuo modello. Ad esempio, per sovrascrivere il modello di accesso sopra, potresti voler copiare tutto dal file {% altro %} blocco, che contiene il modulo e il pulsante di invio, e aggiungilo al tuo modello personalizzato. Ecco un esempio:
{% extends 'base.html' %}
{% block content %}
<p>If you have not created an account yet, then please
<ahref="{{ signup_url }}">sign upa> first.p>
<formclass="login"method="POST"action="{% url 'account_login' %}">
{% csrf_token %}
{{ form.as_p }}
{% if redirect_field_value %}
<inputtype="hidden"name="{{ redirect_field_name }}"value="{{ redirect_field_value }}" />
{% endif %}
<aclass="button secondaryAction"href="{% url 'account_reset_password' %}">Forgot password?a>
<buttonclass="primaryAction"type="submit">SIgn inbutton>
form>
{% endblock content %}
Il codice sopra utilizza Eredità del modello di Django ereditare le funzionalità da base.html modello. Assicurati di rimuovere i tag non necessari come {% blocktrans %} etichetta. Se lo hai fatto, la tua pagina di accesso dovrebbe essere simile a questa:
L'intestazione e il piè di pagina nell'immagine sopra saranno diversi dai tuoi.
Passaggio 3: aggiungi stili personalizzati al modulo
Nel passaggio precedente, il modulo di accesso viene visualizzato come un paragrafo utilizzando l'estensione {{ form.as_p }} etichetta. Per aggiungere stili al tuo modulo, devi conoscere il valore di nome attributo associato a ciascun campo di input.
Puoi ispezionare la tua pagina per ottenere i valori di cui hai bisogno.
L'immagine sopra mostra l'attributo name associato a e-mail campo del modulo.
Ora puoi aggiungere i campi del modulo individualmente nel tuo progetto. Ad esempio, puoi aggiungere il campo email in questo modo:
{{ form.login }}
<labelfor="{{form.login.id_for_label}}">Emaillabel>
{{ form.login.errors|safe }}
Puoi usa Bootstrap con il tuo progetto Django per modellare facilmente il tuo modulo. Ecco un esempio:
<divclass="form-floating form-group">
{{ form.login }}
<labelfor="{{form.login.id_for_label}}">Emaillabel>
{{ form.login.errors|safe }}
div>
Il codice precedente aggiunge le classi del modulo Bootstrap al modulo. Ora puoi aggiungere gli altri campi di cui hai bisogno e modellarli secondo le tue preferenze. Se non ti piace usare Bootstrap per lo styling, django-crispy-forms è un'alternativa allo styling dei tuoi moduli. L'esempio seguente utilizza Bootstrap per lo styling.
<divclass="container d-flex justify-content-center align-items-center vh-100">
<formmethod="post"class="login"id="signup_form"action="{% url 'account_login' %}">
<divclass="text-center mb-4">
<h1class="h3 mb-3 font-weight-normal">Sign inh1>
div>
{{ form.non_field_errors | safe }}
{% csrf_token %}
<divclass="row g-3">
<divclass="col-12">
<divclass="form-floating form-group">
{{ form.login }}
<labelfor="{{form.login.id_for_label}}">Emaillabel>
{{ form.login.errors|safe }}
div>
div>
<divclass="col-12">
<divclass="form-floating form-group my-3">
{{ form.password }}
<labelfor="{{form.password.id_for_label}}">Passwordlabel>
{{ form.password.errors|safe }}
div>
div>
<divclass="col-12">
<divclass="form-check">
<labelfor="{{form.remember.id_for_label}}"class="form-check-label">Remember melabel>
{{ form.remember }}
div>
div>
<divclass="col-6">
{% if redirect_field_value %}
<inputtype="hidden"name="{{ redirect_field_name }}"value="{{ redirect_field_value }}" />
{% endif %}
<buttonclass="btn btn-primary w-100 py-3 bg-accent"type="submit">Sign inbutton>
<aclass="button secondaryAction text-accent"href="{% url 'account_reset_password' %}">Forgot
Password?a>
div>
div>
form>
div>
Il blocco di codice sopra produrrà un output simile all'immagine seguente:
Puoi saperne di più sui moduli in django-allauth leggendo il file documentazione ufficiale.
Sostituisci qualsiasi modello in django-allauth
django-allauth contiene molti modelli predefiniti che puoi sovrascrivere. Con i passaggi di questa guida, puoi sovrascrivere qualsiasi modello in django-allauth. Dovresti considerare l'utilizzo di questo pacchetto per gestire il tuo sistema di autenticazione, in modo da poterti concentrare sulla creazione delle altre importanti funzionalità della tua applicazione.