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.

  1. Puoi installare django-allauth pacchetto utilizzando il gestore pacchetti Pip:
    pip install django-allauth
  2. 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
    ]

  3. instagram viewer
  4. Aggiungi backend di autenticazione al file delle impostazioni:
    AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
    ]
  5. Aggiungi un ID sito al tuo progetto:
    SITE_ID = 1
  6. 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.