Introduzione: In questo articolo, esploreremo come aggiungere la funzionalità di autocompletamento a un campo di input in un’applicazione web Django. L’autocompletamento consente agli utenti di selezionare rapidamente opzioni da un elenco predefinito mentre digitano nel campo di input. Utilizzeremo l’elemento HTML5 datalist
per creare un menu a discesa di opzioni che verranno popolate da un database.
Passaggi principali:
-
Creazione del modello: Inizieremo creando un modello nel nostro progetto Django. Questo modello rappresenterà i dati che vogliamo utilizzare per l’autocompletamento.
-
Popolamento del database: Successivamente, popoleremo il nostro database con i dati necessari per l’autocompletamento. Ad esempio, se stiamo creando un campo di input per i nomi degli utenti, inseriremo i nomi degli utenti nel database.
-
Vista e template: Creeremo una vista che recupera gli oggetti dal database e li passa al template. Nel template, aggiungeremo un campo di input e l’elemento
datalist
. Popoleremo le opzioni dell’elementodatalist
con i dati dal database. -
Implementazione nel template: Nel nostro template, aggiungeremo un campo di input e l’elemento
datalist
. Utilizzeremo il taginput
con l’attributolist
per collegare l’input all’elementodatalist
. Le opzioni dell’elementodatalist
saranno generate dinamicamente dal database.
Codice di esempio:
<!-- Nel template -->
<form method="post">
<label for="user_input">Nome utente:</label>
<input type="text" id="user_input" name="user_input" list="usernames">
<datalist id="usernames">
{% for user in users %}
<option value="{{ user.username }}">
{% endfor %}
</datalist>
<input type="submit" value="Cerca">
</form>
# Nel view.py
from django.shortcuts import render
from .models import User
def autocomplete_view(request):
users = User.objects.all()
return render(request, 'autocomplete_template.html', {'users': users})
Conclusioni: L’autocompletamento è un’ottima funzionalità per migliorare l’esperienza dell’utente e semplificare l’inserimento dei dati. Con l’elemento datalist
di HTML5 e Django, possiamo implementare facilmente questa funzionalità nei nostri progetti web.