Предпоставки
Преди да практикувате примерите от този урок, трябва да изпълните следните задачи:
- Инсталирайте Django версия 3+ на Ubuntu 20+ (за предпочитане)
- Създайте проект на Django
- Стартирайте сървъра Django, за да проверите дали сървърът работи правилно или не.
Настройте приложение Django
A. Изпълнете следната команда, за да създадете приложение на Django с име filterapp.
$ python3 управлява.py startapp filterappБ. Изпълнете следната команда, за да създадете потребителя за достъп до базата данни на Django. Ако сте създали потребителя преди това, не е необходимо да изпълнявате командата.
$ python3 управлява.py създаваuperuser° С. Добавете името на приложението в INSTALLED_APP част от py файл.
INSTALLED_APPS = [..
„филтерап“
]
д. Създайте папка с име шаблони вътре в filterapp папка и задайте шаблони местоположението на приложението в ШАБЛОНИ част от py файл.
ШАБЛОНИ = [.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
.. .
,
]
Създайте модел за таблицата на базата данни
Отвори модели.py файл от filterapp папка и добавете следния скрипт, за да определите структурата на служители таблици. Служител клас е дефиниран за създаване на таблица с име служители с име, поща, имейл, отдел, и дата на присъединяване полета. Тук, име, пост, и отдел полета ще съхранява данни за символи, електронна поща полето ще съхранява имейл адреса и дата на присъединяване полето ще съхранява данни за дата.
модели.py
# Модул за импортиране на моделиот django.db модели за импортиране
# Определете класа за създаване на таблица на служителите
клас Служител (модели.Модел):
име = модели.CharField (max_length = 50)
пост = модели.CharField (max_length = 40)
имейл = модели.EmailField ()
отдел = модели.CharField (max_length = 30)
joinning_date = модели.DateField ()
Стартирайте макемиграции команда за създаване на нова миграция въз основа на промените, направени от моделите.
$ python3 управлява.py makemigrations filterappСтартирайте мигрират команда за изпълнение на SQL команди и създаване на всички таблици в базата данни, които са дефинирани в модели.py файл.
$ python3 управлява.py мигриратПроменете съдържанието на администратор.py файл със следното съдържание. Тук, работникът клас на моделите е регистриран с помощта регистъра () метод за показване на записи на служителите таблици в таблото за управление на Django.
администратор.py
# Импортиране на администраторски модулот django.принос вноса администратор
# Импортиране на модел на служител
от .модели внос Служител
# Регистрирайте модел на служител
администратор.сайт.регистър (служител)
Изпълнете следния URL, за да отворите страницата за вход на администратора на Django. Предоставете валидно потребителско име и парола, за да отворите Табло за управление на Django за достъп до таблиците на базата данни.
Поставете два или повече записа на служителите, за да приложите филтъра към данните. Тук се вмъкват пет записа.
Създайте Търсене.html файл в filterapp / шаблони / папка със следния скрипт. Данните от служител таблицата ще се покаже в този файл с шаблон. за цикъл се използва за четене на съдържанието на списък с обекти променлива, която ще бъде предадена от файла на изгледа. The име, пост, и отдел стойности на служители таблицата ще се покаже чрез използване на списъка.
Търсене.html
Урок за филтриране на Django
Списък на служителите
изп.име (изп.публикуване)
emp.отдел отдел
% за emp в списък с обекти%
% endfor%
Отвори мнения.py файл от filterapp папка и модифицирайте съдържанието на файла със следния скрипт. Имената на модели и шаблони са дефинирани в скрипта.
мнения.py
# Импортиране на модул ListViewот django.мнения.родово импортиране ListView
# Импортиране на модул на служител
от .модели внос Служител
# Импортиране на Q модул
от django.db.модели импортиране Q
# Определете клас за филтриране на данни
клас SearchEfficiee (ListView):
# Определете модел
модел = Служител
# Определете шаблон
template_name = 'търсене.html '
Променете съдържанието на URL адреси.py файл със следното съдържание. В сценария,searchEmp'пътят е дефиниран за извикване на ТърсенеEeeeeeee.as_view () метод, който ще изпрати всички данни и филтрираните данни на служители таблица към файла на шаблона.
URL адреси.py
# Импортиране на администраторски модулот django.принос вноса администратор
# Импортиране на път и включване на модул
от django.URL адреси за импортиране, включете
# Импортиране на модул SearchEfficiee
от filterapp.изгледи импортиране
urlpatterns = [
# Определете пътя за администратор
път ('admin /', admin.сайт.URL адреси),
# Определете пътя за търсене
path ('searchEmp /', SearchEfficiee.as_view ()),
]
Следният изход ще се появи, без да се прилага филтриране за следния URL адрес.
http: // localhost: 8000 / SerachEmp
Филтриране на данни чрез просто филтриране
Добавете следния ред в края на мнения.py файл за филтриране на записите на служители таблица, където стойността на пост полето е "касиер счетоводител'.
# Прилагане на основно филтриранеqueryset = Служител.обекти.филтър (пост = 'Счетоводител')
Следният изход ще се появи след прилагане на основно филтриране.
Филтриране на данни с множество полета
Добавете следния ред в края на мнения.py файл за филтриране на записите на служители таблица, където стойността на отдел полето еHT' и имейлът полето е „[имейл защитен]“.
# Прилагане на филтриране с множество полетаqueryset = Служител.обекти.филтър (отдел = 'HR', имейл = '[имейл защитен]')
Следното извеждане ще се появи след прилагане на множество филтри.
Филтриране на данни с Q обект
Добавете следния ред в края на мнения.py файл за филтриране на записите на служители таблица, където стойността на пост полето еМениджърили стойността на отдел полето еПродажби'.
# Прилагане на филтриране с помощта на Q обектиqueryset = Служител.обекти.филтър (Q (пост = 'Мениджър') | Q (отдел = 'Продажби'))
Следното извеждане ще се появи след прилагане на Q обектно филтриране.
Филтрирайте данните чрез използване на верижно филтриране
Добавете следния ред в края на мнения.py файл за филтриране на записите на служители таблица, където стойността на отдел полето ще бъде проверено първо и ако връща true, тогава стойността на име полето ще бъде проверено.
# Прилагане на филтриране чрез веригиqueryset = Служител.обекти.филтър (отдел = 'HR').филтър (name = 'Mehrab Hossain')
Следното извеждане ще се появи след прилагане на веригата на филтъра.
Заключение
Данните могат да бъдат филтрирани в Django по много начини въз основа на изискванията на приложението. В този урок бяха обяснени четири различни начина на филтриране, за да се разберат основите на филтрирането на Django. Това са просто филтриране, многократно филтриране, филтриране с Q обект и верижно филтриране.