Conditions préalables
Avant de mettre en pratique les exemples de ce didacticiel, vous devez effectuer les tâches suivantes :
- Installez la version Django 3+ sur Ubuntu 20+ (de préférence)
- Créer un projet Django
- Exécutez le serveur Django pour vérifier que le serveur fonctionne correctement ou non.
Configurer une application Django
UNE. Exécutez la commande suivante pour créer une application Django nommée application de filtrage.
$ python3 gérer.py startapp filterappB. Exécutez la commande suivante pour créer l'utilisateur permettant d'accéder à la base de données Django. Si vous avez déjà créé l'utilisateur, vous n'avez pas besoin d'exécuter la commande.
$ python3 gérer.py createsuperuserC. Ajoutez le nom de l'application dans le INSTALLED_APP partie de la py déposer.
INSTALLED_APPS = […
'filtrerapp'
]
ré. Créer un dossier nommé modèles à l'intérieur de application de filtrage dossier et définissez le des modèles emplacement de l'application dans le MODÈLES partie de la py déposer.
MODÈLES = [… .
'DIRS' : ['/home/fahmida/django_pro/filterapp/templates'],
… .
,
]
Créer un modèle pour la table de base de données
Ouvrez le des modèles.py fichier de la application de filtrage dossier et ajoutez le script suivant pour définir la structure de des employés les tables. Employé la classe est définie pour créer une table nommée des employés avec nom, poste, e-mail, département, et date d'inscription des champs. Ici, nom, poste, et département les champs stockeront les données de caractère, le e-mail champ stockera l'adresse e-mail et le date d'inscription le champ stockera les données de date.
des modèles.py
# Module d'importation de modèlesde Django.modèles d'importation de base de données
# Définir la classe pour créer la table des employés
classe Employé(modèles.Modèle):
nom = modèles.CharField(max_length=50)
poste = modèles.CharField(max_length=40)
email = modèles.Champ de messagerie()
département = modèles.CharField(max_length=30)
joinning_date = modèles.Champ de date()
Exécutez le faire des migrations commande pour créer une nouvelle migration basée sur les modifications apportées par les modèles.
$ python3 gérer.py makemigrations filterappExécutez le émigrer pour exécuter les commandes SQL et créer toutes les tables de la base de données définies dans le des modèles.py déposer.
$ python3 gérer.py migrerModifier le contenu de la administrateur.py fichier avec le contenu suivant. Ici, l'employé classe des modèles est enregistrée en utilisant le registre() méthode pour afficher le dossiers des employés tables dans le tableau de bord d'administration Django.
administrateur.py
# Importer le module d'administrationde Django.administrateur d'importation de contribution
# Importer le modèle d'employé
de .modèles import Employé
# Enregistrer le modèle d'employé
administrateur.placer.s'inscrire (employé)
Exécutez l'URL suivante pour ouvrir la page de connexion de l'administrateur Django. Fournissez le nom d'utilisateur et le mot de passe valides pour ouvrir le Tableau de bord d'administration de Django pour accéder aux tables de la base de données.
Insérez deux ou plusieurs enregistrements d'employés pour appliquer le filtre sur les données. Ici cinq enregistrements sont insérés.
Créer le rechercher.html fichier à l'intérieur du filterapp/modèles/ dossier avec le script suivant. Les données du employé le tableau sera affiché dans ce fichier modèle. pour boucle est utilisée pour lire le contenu de la liste_objets variable qui sera passée du fichier de vue. le nom, poste, et département valeurs de la des employés tableau sera affiché en utilisant la liste.
rechercher.html
Tutoriel sur les filtres Django
Liste des employés
emp.Nom ( emp.Publier )
emp.département département
% pour emp dans object_list %
% fin pour %
Ouvrez le vues.py fichier de la application de filtrage dossier et modifiez le contenu du fichier avec le script suivant. Les noms de modèle et de modèle sont définis dans le script.
vues.py
# Importer le module ListViewde Django.vues.importation générique ListView
# Importer le module Employé
de .modèles import Employé
# Importer le module Q
de Django.db.modèles d'importation Q
# Définir la classe pour filtrer les données
classe SearchEmployee (ListView):
# Définir le modèle
modèle = Employé
# Définir le modèle
template_name = 'recherche.html'
Modifier le contenu de la URL.py fichier avec le contenu suivant. Dans le script, le 'rechercheEmp' chemin est défini pour appeler le RechercheEmployé.as_view() méthode qui enverra toutes les données et les données filtrées du des employés table dans le fichier modèle.
URL.py
# Importer le module d'administrationde Django.administrateur d'importation de contribution
# Chemin d'importation et module d'inclusion
de Django.chemin d'importation des URL, inclure
# Importer le module SearchEmployee
de filterapp.vues importer SearchEmployee
urlpatterns = [
# Définir le chemin pour l'administrateur
chemin('admin/', admin.placer.URL),
# Définir le chemin de recherche
path('searchEmp/', SearchEmployee.as_view()),
]
La sortie suivante apparaîtra sans appliquer de filtrage pour l'URL suivante.
http://localhost:8000/SerachEmp
Filtrer les données par filtrage simple
Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la Publier le champ est 'Comptable'.
# Appliquer un filtrage de basejeu de requêtes = employé.objets.filter(post ='Comptable')
La sortie suivante apparaîtra après l'application du filtrage de base.
Filtrer les données avec plusieurs champs
Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la département le champ est 'HT' et le courriel le champ est '[email protégé]'.
# Appliquer un filtrage avec plusieurs champsjeu de requêtes = employé.objets.filter(department='HR', email='[email protected]')
La sortie suivante apparaîtra après l'application de plusieurs filtrages.
Filtrer les données avec l'objet Q
Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la Publier le champ est 'Directeur' ou la valeur du département le champ est 'Ventes'.
# Appliquer le filtrage en utilisant des objets Qjeu de requêtes = employé.objets.filter( Q(post='Manager') | Q(department='Ventes'))
La sortie suivante apparaîtra après l'application du filtrage d'objet Q.
Filtrer les données à l'aide du chaînage de filtres
Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la département le champ sera vérifié en premier et s'il retourne vrai alors la valeur du Nom le champ sera vérifié.
# Appliquer le filtrage par chaînagejeu de requêtes = employé.objets.filtre(service='RH').filter(nom='Mehrab Hossain')
La sortie suivante apparaîtra après l'application du chaînage de filtre.
Conclusion
Les données peuvent être filtrées dans Django de plusieurs manières en fonction des exigences de l'application. Quatre façons différentes de filtrer ont été expliquées dans ce tutoriel pour comprendre les bases du filtrage Django. Il s'agit du filtrage simple, du filtrage multiple, du filtrage avec objet Q et du chaînage des filtres.