De standaardsjablonen van de django-allauth zien er bot uit en passen mogelijk niet bij uw behoeften. Hier leest u hoe u ze kunt overschrijven.
django-allauth is een Django-pakket waarmee u snel en eenvoudig een authenticatiesysteem voor uw Django-apps kunt bouwen. Het heeft ingebouwde sjablonen zodat u zich kunt concentreren op andere belangrijke delen van uw app.
Hoewel de ingebouwde sjablonen nuttig zijn, zult u ze willen wijzigen omdat ze niet de beste gebruikersinterface hebben.
Hoe django-allauth te installeren en configureren
Door een paar eenvoudige stappen te volgen, kunt u django-allauth naadloos in uw Django-project installeren.
- Je kunt installeren django-allauth pakket met behulp van de Pip-pakketbeheerder:
pip install django-allauth
- Voeg deze apps toe aan uw geïnstalleerde apps in het instellingenbestand van uw project:
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
] - Voeg authenticatie-backends toe aan uw instellingenbestand:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
] - Voeg een site-ID toe aan uw project:
SITE_ID = 1
- Configureer de URL's voor django-allauth:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Als u de bovenstaande configuraties correct uitvoert, zou u een sjabloon als deze moeten zien wanneer u naar navigeert http://127.0.0.1:8000/accounts/signup/:
U kunt de lijst met beschikbare URL's bekijken door naar te navigeren http://127.0.0.1:8000/accounts/ met DEBUG=Waar in uw instellingenbestand.
Hoe u de aanmeldingssjabloon in django-allauth kunt overschrijven
Eerst moet u uw Sjablonen map als u dat nog niet heeft gedaan. Open uw instellingenbestand en navigeer naar het SJABLONEN lijst. Zoek daarin de DIRS lijst en wijzig deze als volgt:
'DIRS': [BASE_DIR/'templates'],
Zorg ervoor dat u een Sjablonen map in de hoofdmap van uw project. U kunt de standaard inlogsjabloon in django-allauth overschrijven door deze volgende stappen te volgen.
Stap 1: Maak uw sjabloonbestanden
In uw Sjablonen map, maak een nieuwe map genaamd rekening om de sjablonen met betrekking tot django-allauth te bewaren.
De registratie- en login-sjablonen zouden dat moeten zijn aanmelden.html En inloggen.html respectievelijk. U kunt de juiste sjabloonnaam bepalen door uw Virtuele Python-omgeving en navigeren naar Lib > sitepakketten > allauth > sjablonen > account map om de sjablonen te vinden. U moet de code doornemen om te begrijpen hoe de sjablonen werken. De inlogsjabloon bevat bijvoorbeeld deze code:
Stap 2: Voeg HTML-code toe aan uw sjabloonbestanden
Nadat u uw bestanden heeft gemaakt, moet u de aangepaste HTML-code voor uw sjabloon toevoegen. Als u bijvoorbeeld de bovenstaande aanmeldingssjabloon wilt overschrijven, wilt u misschien alles uit het {% anders %} blok, dat het formulier en de indieningsknop bevat, en voeg dit toe aan uw aangepaste sjabloon. Hier is een voorbeeld:
{% 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 %}
De bovenstaande code gebruikt Django's sjabloonovererving eigenschappen overerven van de basis.html sjabloon. Zorg ervoor dat u onnodige tags verwijdert, zoals de {% bloktrans %} label. Als u dit heeft gedaan, zou uw inlogpagina er ongeveer zo uit moeten zien:
De kop- en voettekst in de bovenstaande afbeelding zullen verschillen van die van u.
Stap 3: Voeg aangepaste stijlen toe aan uw formulier
In de vorige stap wordt het inlogformulier weergegeven als een paragraaf met behulp van de {{ formulier.as_p }} label. Om stijlen aan uw formulier toe te voegen, moet u de waarde van de naam attribuut dat aan elk invoerveld is gekoppeld.
U kunt uw pagina inspecteren om de waarden te verkrijgen die u nodig heeft.
De afbeelding hierboven toont het naamattribuut dat is gekoppeld aan de e-mail veld van het formulier.
Nu kunt u de formuliervelden afzonderlijk aan uw project toevoegen. U kunt het e-mailveld bijvoorbeeld als volgt toevoegen:
{{ form.login }}
<labelfor="{{form.login.id_for_label}}">Emaillabel>
{{ form.login.errors|safe }}
Jij kan gebruik Bootstrap met uw Django-project om uw formulier eenvoudig te stylen. Hier is een voorbeeld:
<divclass="form-floating form-group">
{{ form.login }}
<labelfor="{{form.login.id_for_label}}">Emaillabel>
{{ form.login.errors|safe }}
div>
De bovenstaande code voegt Bootstrap-formulierklassen toe aan het formulier. Nu kunt u de andere benodigde velden toevoegen en deze naar eigen voorkeur opmaken. Als je Bootstrap niet graag gebruikt voor styling, django-crispy-forms is een alternatief voor het opmaken van uw formulieren. In het onderstaande voorbeeld wordt Bootstrap gebruikt voor 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>
Het bovenstaande codeblok produceert uitvoer die lijkt op de volgende afbeelding:
Je kunt meer leren over formulieren in django-allauth door de officiële documentatie.
Overschrijf elke sjabloon in django-allauth
django-allauth bevat veel standaardsjablonen die u kunt overschrijven. Met de stappen in deze handleiding kunt u elke sjabloon in django-allauth overschrijven. U kunt overwegen dit pakket te gebruiken om uw authenticatiesysteem af te handelen, zodat u zich kunt concentreren op het bouwen van de andere belangrijke functies van uw applicatie.