Come costruire una ricerca di base per un sito Django?

Come costruire una ricerca di base per un sito Django?

Un particolare contenuto di qualsiasi sito viene normalmente recuperato dagli utenti tramite Google Search. Tuttavia, se questa opzione di ricerca è implementata sul sito Web, gli utenti possono facilmente trovare il contenuto desiderato all'interno del sito senza utilizzare Google Search ... Un altro vantaggio per l'aggiunta di un'opzione di ricerca all'interno di un sito Web è che lo sviluppatore può gestire correttamente l'output di ricerca. Ciò significa che può controllare quale contenuto del sito apparirà o no. Questo tutorial mostrerà il processo di implementazione della ricerca di base nel sito di Django.

Prerequisiti:

Prima di praticare la sceneggiatura di questo tutorial, devi completare le seguenti attività:

  1. Installa la versione Django 3+ su Ubuntu 20+ (preferibilmente)
  2. Crea un progetto Django
  3. Esegui il server Django per verificare che il server funzioni correttamente o meno.

Imposta un'app Django:

Esegui il comando seguente per creare un'app Django denominata SearchApp.

$ Python3 Gestisci.Py Startapp SearchApp

Esegui il comando seguente per creare l'utente per accedere al database Django. Se hai creato l'utente prima, non è necessario eseguire il comando.

$ Python3 Gestisci.py createsuperuser

Aggiungi il nome dell'app nella parte installata_app delle impostazioni.Py File.

Installato_apps = [
..
'SearchApp'
"

Crea una cartella denominata Modelli all'interno della cartella SearchApp e imposta la posizione del modello dell'app nella parte dei modelli delle impostazioni.Py File.

Modelli = [

.. .
'Dirs': ['/Home/Fahmida/Django_Pro/SearchApp/Templates'],
.. .
,
"

Crea modelli:

Modifica i modelli.File PY con il seguente script. Qui, sono state definite due classi per creare due tabelle relazionali denominate BookTypes e libri. Il campo TIPE della tabella dei libri è una chiave straniera che apparirà dalla tabella BookTypes.

Modelli.Py

# Importa i moduli necessari
da Django.Modelli di importazione DB
da Django.URLS Importa il contrario
# Crea il modello Gor Booktype
Classe BookType (modelli.Modello):
BType = Models.Charfield (max_length = 100, univoco = true)
Meta di classe:
ordining = ('btype',)
# Crea il modello Gor Book
Libro di classe (modelli.Modello):
book_name = modelli.Charfield (max_length = 150)
autore_name = modelli.Charfield (max_length = 150)
tipo = modelli.ForeignKey (BookType, On_Delete = Models.CASCATA)
Price = modelli.Floatield ()
Pubblicazione = modelli.Charfield (max_length = 100)
Meta di classe:
Ordering = ('book_name',)
def __str __ (self):
Restituisci se stessi.book_name
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 ricerca.html. Il libro_list.HTML mostrerà tutti i record dalla tabella dei libri. Il libro_detail.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



Lista di libri










% se type % type.nome % else % elenco di libri % endif %











% per x nel libro %

X.book_name


di x.nome dell'autore


$ x.prezzo




% endfor %



book_detail.html





libro.book_name






libro.book_name




Autore: libro.nome dell'autore


Tipo: type


Pubblicazione: libro.pubblicazione


Price: $ libro.prezzo







ricerca.html



Risultato della ricerca









% se query %


% con i risultati.conta come total_results %
Trovato total_results risultato total_results | pluralize
% endwith %


% per c nei risultati %

C.book_name


C.nome dell'autore


% vuoto %

nessun risultato trovato.


% endfor %
% finisci se %






Crea le funzioni di visualizzazione:

Modifica le viste.File PY con il seguente script. Tre funzioni sono state definite nello script. La funzione book_list () visualizzerà il libro_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.Py

# Importa i moduli necessari
da Django.scorciatoie importanti rendering, get_object_or_404
da .Models Import Book, BookType
da Django.db.Modelli importano Q
# Definisci la funzione per visualizzare tutti i libri
def book_list (richiesta):
libro = libro.oggetti.Tutto()
restituzione render (richiesta, "book_list.html ', ' libro ': libro)
# Definisci la funzione per visualizzare il libro particolare
def book_detail (richiesta, id):
book = get_object_or_404 (libro, id = id)
Tipi = BookType.oggetti.Tutto()
t = tipi.get (id = libro.tipo.id)
restituzione render (richiesta ", book_detail.html ', ' libro ': libro,' type ': t.btype)
# Definisci la funzione al libro di ricerca
DEF Search (richiesta):
Risultati = []
Se richiesta.Method == "get":
query = richiesta.OTTENERE.Ottieni ('Search')
Se query == ":
query = 'none'
Risultati = libro.oggetti.Filtro (Q (book_name__icontains = query) | Q (Author_name__icontains = query) | Q (price__icontains = query))
rendering render (richiesta ", ricerca.html ', ' query ': query,' risultati ': risultati)

Imposta percorsi per chiamare le funzioni di visualizzazione:

Modifica gli URL.File PY del progetto Django con il seguente script. Quattro percorsi sono stati definiti nello script. Il percorso 'Admin/' viene utilizzato per aprire il dashboard amministrativo Django. Il percorso vuoto (") viene utilizzato per chiamare la funzione book_list (). Il percorso '/' viene utilizzato per chiamare la funzione book_detail (). Il percorso 'Search/' viene utilizzato per chiamare la funzione Search ().

URL.Py

# Importa modulo amministratore
da Django.AMPIONE AMMINIO DI IMPIT
# Modulo per il percorso Importa
da Django.percorso di importazione degli URL
# Visualizza importazione
Dalle visualizzazioni di importazione di SearchApp
# Definisci i percorsi
urlpatterns = [
Path ('Admin/', Admin.luogo.URL),
Path (", viste.book_list, name = 'book_list'),
Path ('/', viste.book_detail, name = 'book_detail'),
Path ('Search/', Visualizzazioni.Search, name = 'Search'),
"

Esegui l'app dal browser:

Esegui il seguente comando per eseguire Django Server.

$ Python3 Gestisci.Py Runserver

Esegui 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 appariranno nel browser.

Se l'utente cerca la parola, la 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. I nuovi sviluppatori di Django saranno in grado di implementare la funzione di ricerca nel loro sito Web dopo aver letto questo tutorial.