Un particolare contenuto di qualsiasi sito viene normalmente recuperato dagli utenti tramite la ricerca di Google. Tuttavia, se questa opzione di ricerca è implementata sul sito Web, gli utenti possono facilmente trovare il contenuto desiderato all'interno del sito senza utilizzare la ricerca di Google... Un altro vantaggio dell'aggiunta di un'opzione di ricerca all'interno di un sito Web è che lo sviluppatore può gestire correttamente l'output della ricerca. Ciò significa che può controllare quale contenuto del sito verrà visualizzato o meno. Questo tutorial mostrerà il processo di implementazione della ricerca di base nel sito Django.
Prerequisiti:
Prima di esercitarti con lo script di questo tutorial, devi completare le seguenti attività:
- Installa la versione Django 3+ su Ubuntu 20+ (preferibilmente)
- Crea un progetto Django
- Esegui il server Django per verificare che il server funzioni correttamente o meno.
Configura un'app Django:
Esegui il seguente comando per creare un'app Django denominata searchapp.
$ python3 gestire.py startapp searchappEsegui il seguente comando per creare l'utente per l'accesso al database Django. Se hai creato l'utente in precedenza, non è necessario eseguire il comando.
$ python3 gestire.py createsuperuserAggiungi il nome dell'app nella parte INSTALLED_APP delle impostazioni.py file.
INSTALLATE_APPS = […
'app di ricerca'
]
Crea una cartella denominata modelli all'interno della cartella searchapp e imposta la posizione del modello dell'app nella parte TEMPLATES delle impostazioni.py file.
MODELLI = [… .
'DIRS': ['/home/fahmida/django_pro/searchapp/templates'],
… .
,
]
Crea modelli:
Modifica i modelli.py con il seguente script. Qui sono state definite due classi per creare due tabelle relazionali denominate booktypes e books. Il campo del tipo della tabella dei libri è una chiave esterna che apparirà dalla tabella dei tipi di libri.
Modelli.pi
# Importa i moduli necessarida django.modelli di importazione db
da django.gli URL importano al contrario
# Crea modello per tipo di libro
classe Booktype (modelli.Modello):
btype = modelli.CharField(max_length=100, unico=vero)
classe Meta:
ordering=('btype',)
# Crea modello gor book
Libro di classe (modelli.Modello):
book_name = modelli.CharField(max_length=150)
nome_autore = modelle.CharField(max_length=150)
tipo = modelli.ForeignKey(Booktype, on_delete=models.CASCATA)
prezzo = modelli.Campo mobile()
pubblicazione = modelli.CharField(max_length=100)
classe Meta:
ordering=('nome_libro',)
def __str__(self):
tornare da sé.nome_libro
def get_url(self):
return reverse('book_detail', args=[self.id])
Crea modelli per la ricerca:
Sono necessari tre file HTML per creare la funzione di ricerca mostrata in questo tutorial. Questi sono book_list.html, book_detail.html e cerca.html. La lista_libro.html visualizzerà tutti i record dalla tabella dei libri. Il libro_dettaglio.html mostrerà i dettagli di un particolare libro. La ricerca.html visualizzerà il risultato della ricerca dopo aver inviato il modulo di ricerca.
lista di libri.html
book_detail.html
libro.nome_libro
Autore: libro.nome dell'autore
Tipo: tipo
Pubblicazione: libro.pubblicazione
Prezzo: $libro.prezzo
ricerca.html
% se query %
% con risultati.conta come total_results %
Trovato total_results risultato total_results|pluralize
% termina con %
% per c nei risultati %
c.nome_libro
c.nome dell'autore
% vuoto %
nessun risultato trovato.
% endfor %
% finisci se %
Crea funzioni di visualizzazione:
Modifica le visualizzazioni.py con il seguente script. Nello script sono state definite tre funzioni. La funzione book_list() visualizzerà la book_list.file html. La funzione book_detail() visualizzerà il book_detail.html. La funzione search() cercherà i record in base ai dati inviati dal modulo di ricerca e visualizzerà il risultato nella ricerca.html.
visualizzazioni.pi
# Importa i moduli necessarida django.scorciatoie importare rendering, get_object_or_404
a partire dal .i modelli importano Book, Booktype
da django.db.modelli importati Q
# Definisci la funzione per visualizzare tutti i libri
def book_list(richiesta):
libro = libro.oggetti.tutti()
return render(richiesta, 'lista_libro.html', 'libro': libro )
# Definisci la funzione per visualizzare il particolare libro
def book_detail(richiesta,id):
libro = get_object_or_404(Libro, id=id)
tipi = tipo di libro.oggetti.tutti()
t = tipi.get(id=libro.genere.id)
return render(richiesta, 'book_detail.html', 'book': book, 'type': t.btype)
# Definisci la funzione per cercare il libro
def ricerca (richiesta):
risultati = []
se richiesta.metodo == "OTTIENI":
query = richiesta.OTTENERE.get('cerca')
se domanda == ":
query = 'Nessuno'
risultati = Libro.oggetti.filter(Q(nome_libro__icontains=query) | Q(nome_autore__icontains=query) | Q(price__icontains=query) )
return render(richiesta, 'cerca.html', 'query': query, 'risultati': risultati)
Imposta percorsi per chiamare le funzioni di visualizzazione:
Modifica gli URL.py del progetto Django con il seguente script. Nello script sono stati definiti quattro percorsi. Il percorso 'admin/' viene utilizzato per aprire il dashboard di amministrazione di Django. Il percorso vuoto(") è usato per chiamare la funzione book_list(). '
URL.pi
# Importa modulo di amministrazioneda django.amministratore di importazione contributi
# Modulo percorso di importazione
da django.percorso di importazione degli URL
# Importa vista
dalle visualizzazioni di importazione di searchapp
# Definisci percorsi
patternurl = [
percorso('admin/', admin.luogo.URL),
percorso(", viste.book_list, name='book_list'),
percorso('/', viste.book_detail, name='book_detail'),
percorso('ricerca/', viste.cerca, nome='cerca'),
]
Esegui l'app dal browser:
Esegui il seguente comando per eseguire il server Django.
$ python3 gestire.py runserverEsegui il seguente URL da qualsiasi browser per visualizzare l'elenco dei libri dalla tabella.
http://localhost:8000
Se l'utente fa clic sul collegamento "PHP e MySQL per siti Web dinamici", i dettagli di questo libro verranno visualizzati nel browser.
Se l'utente cerca la parola fisica nel browser, il seguente risultato di ricerca verrà visualizzato nel browser.
Conclusione:
In questo tutorial è stata implementata un'app Django con l'opzione di ricerca di base utilizzando le tabelle del database. I nuovi sviluppatori Django saranno in grado di implementare la funzione di ricerca nel loro sito Web dopo aver letto questo tutorial.