Comment créer une recherche de base pour un site Django?

Comment créer une recherche de base pour un site Django?

Un contenu particulier de tout site est normalement récupéré par les utilisateurs via Google Search. Cependant, si cette option de recherche est implémentée sur le site Web, les utilisateurs peuvent facilement trouver le contenu souhaité dans le site sans utiliser Google Search… Un autre avantage de l'ajout d'une option de recherche dans un site Web est que le développeur peut gérer la sortie de recherche correctement. Cela signifie qu'il peut contrôler le contenu du site apparaît ou non. Ce tutoriel affichera le processus d'implémentation de la recherche de base sur le site Django.

Conditions préalables:

Avant de pratiquer le script de ce tutoriel, vous devez effectuer les tâches suivantes:

  1. Installez la version 3+ de Django sur Ubuntu 20+ (de préférence)
  2. Créer un projet Django
  3. Exécutez le serveur Django pour vérifier que le serveur fonctionne correctement ou non.

Configurer une application Django:

Exécutez la commande suivante pour créer une application django nommée SearchApp.

$ python3 gérer.py startApp SearchApp

Exécutez la commande suivante pour créer l'utilisateur pour accéder à la base de données Django. Si vous avez créé l'utilisateur avant, vous n'avez pas besoin d'exécuter la commande.

$ python3 gérer.py créeuperuser

Ajouter le nom de l'application dans la partie installée_app des paramètres.fichier PY.

Installé_apps = [

'SearchApp'
]]

Créez un dossier nommé des modèles à l'intérieur du dossier SearchApp et définissez l'emplacement du modèle de l'application dans la partie des modèles des paramètres.fichier PY.

Modèles = [

… .
'DIRS': ['/ home / fahmida / django_pro / searchapp / modèles']],
… .
,
]]

Créer des modèles:

Modifier les modèles.fichier py avec le script suivant. Ici, deux classes ont été définies pour créer deux tables relationnelles nommées booktypes et livres. Le champ Type de la table des livres est une clé étrangère qui apparaîtra à partir de la table BookTypes.

des modèles.py

# Importer les modules nécessaires
De Django.Modèles d'importation DB
De Django.Les URL importent la revers
# Créer un modèle Gor Booktype
Class BookType (modèles.Modèle):
btype = modèles.Charfield (max_length = 100, unique = true)
Classe Meta:
ordonnance = ('btype',)
# Créer un modèle Gor Book
Livre de classe (modèles.Modèle):
book_name = modèles.Charfield (max_length = 150)
auteur_name = modèles.Charfield (max_length = 150)
type = modèles.ForeignKey (BookType, on_delete = Modèles.CASCADE)
Prix ​​= modèles.Floatfield ()
Publication = modèles.Charfield (max_length = 100)
Classe Meta:
ordonnance = ('book_name',)
Def __str __ (Self):
se retourner.book_name
def get_url (self):
return reverse ('book_detail', args = [self.identifiant])

Créer des modèles pour la recherche:

Trois fichiers HTML sont requis pour créer la fonction de recherche affichée dans ce tutoriel. Ce sont des livres.html, book_detail.HTML, et recherche.html. Le livre_liste.HTML affichera tous les enregistrements du tableau des livres. Le livre_detail.HTML affichera les détails d'un livre particulier. La recherche.HTML affichera le résultat de la recherche après avoir soumis le formulaire de recherche.

liste de livres.html



Liste de livres










% si type% type.nom % else% Liste des livres % endif%











% pour x dans le livre%

X.book_name


par x.nom de l'auteur


$ x.prix




% end pour%



book_detail.html





livre.book_name






livre.book_name




Auteur: livre.nom de l'auteur


Type: type


Publication: livre.publication


Prix: $ livre.prix







recherche.html



Résultat de la recherche









% si requête%


% avec les résultats.compter comme total_results%
Found total_results résultat total_results | Pluralize
% terminer par %


% pour C dans les résultats%

c.book_name


c.nom de l'auteur


% vide %

Aucun résultat trouvé.


% end pour%
% fin si %






Créer des fonctions de vue:

Modifier les vues.fichier py avec le script suivant. Trois fonctions ont été définies dans le script. La fonction book_list () affichera le book_list.fichier html. La fonction book_detail () affichera le book_detail.html. La fonction Search () recherchera les enregistrements en fonction des données soumises par le formulaire de recherche et affichera le résultat dans la recherche.html.

vues.py

# Importer les modules nécessaires
De Django.Les raccourcis importent le rendu, get_object_or_404
depuis .Modèles d'importation Book, BookType
De Django.db.Modèles import Q
# Définissez la fonction pour afficher tous les livres
def book_list (demande):
livre = livre.objets.tous()
renvoyer le rendu (demande, 'book_list.html ', ' livre ': livre)
# Définissez la fonction pour afficher le livre particulier
def book_detail (demande, id):
book = get_object_or_404 (livre, id = id)
types = booktype.objets.tous()
T = types.get (id = book.taper.identifiant)
Retour Render (demande, 'book_detail.html ', ' book ': livre,' type ': t.btype)
# Définir la fonction du livre de recherche
Def Search (demande):
résultats = []
Si demande.Méthode == "Get":
requête = demande.OBTENIR.get ('search')
Si requête == ":
query = 'Aucun'
Résultats = réserver.objets.Filter (Q (book_name__iConTains = Query) | Q (Auteur_Name__IConTains = Query) | Q (Price__IConTains = Query))
Retour Render (demande, «Recherche.html ', ' query ': requête,' Résultats ': résultats)

Définissez des chemins pour appeler les fonctions de vue:

Modifier les URL.Fichier PY du projet Django avec le script suivant. Quatre chemins ont été définis dans le script. Le chemin 'Admin /' est utilisé pour ouvrir le tableau de bord administratif Django. Le chemin vide (") est utilisé pour appeler la fonction book_list (). Le chemin '/' est utilisé pour appeler la fonction book_detail (). Le chemin 'search /' est utilisé pour appeler la fonction Search ().

URL.py

# Importer le module d'administration
De Django.contriber d'importation administrateur
# Module d'importation de chemin
De Django.Chemin d'importation des URL
# Affichage d'importation
à partir des vues d'importation SearchApp
# Définir les chemins
urlpatterns = [
Path ('admin /', admin.placer.URL),
Path (", vues.book_list, name = 'book_list'),
Path ('/', vues.book_detail, name = 'book_detail'),
Chemin («Search /», vues.search, name = 'search'),
]]

Exécutez l'application à partir du navigateur:

Exécutez la commande suivante pour exécuter Django Server.

$ python3 gérer.Py Runserver

Exécutez l'URL suivante à partir de n'importe quel navigateur pour afficher la liste des livres de la table.

http: // localhost: 8000

Si l'utilisateur clique sur le lien, «PHP et MySQL pour les sites Web dynamiques», les détails de ce livre apparaîtront dans le navigateur.

Si l'utilisateur recherche le mot, physique dans le navigateur, le résultat de la recherche suivant s'affichera dans le navigateur.

Conclusion:

Une application Django avec l'option de recherche de base a été implémentée dans ce tutoriel en utilisant des tables de base de données. Les nouveaux développeurs de Django pourront implémenter la fonctionnalité de recherche sur leur site Web après avoir lu ce tutoriel.