Питхон

Како филтрирати податке у Дјанго-у?

Како филтрирати податке у Дјанго-у?
Веома је чест захтев да веб апликација приказује податке на веб страници на основу интереса корисника. Функција претраживања апликације чини је једноставнијом за употребу.  Дјанго фрамеворк има уграђену филтер () метода за филтрирање података из табела базе података. Табела може садржавати много записа, а понекад су потребни одређивање неких специфичних података на основу одређених критеријума. Овај задатак постаје лакши коришћењем филтер () метода на различите начине. У овом водичу ће бити речи о начину на који се подаци из табеле базе података могу филтрирати методом филтрирања на четири различита начина.

Предуслови

Пре него што увежбате примере овог водича, морате извршити следеће задатке:

  1. Инсталирајте Дјанго верзију 3+ на Убунту 20+ (пожељно)
  2. Направите Дјанго пројекат
  3. Покрените Дјанго сервер да бисте проверили да ли сервер исправно ради или не.

Подесите апликацију Дјанго

А. Покрените следећу команду да бисте креирали Дјанго апликацију са именом филтерапп.

$ питхон3 управља.пи стартапп филтерапп

Б. Покрените следећу наредбу да бисте креирали корисника за приступ Дјанго бази података. Ако сте већ креирали корисника, тада не треба да покрећете наредбу.

$ питхон3 управља.пи ствара корисничког корисника

Ц. Додајте име апликације у ИНСТАЛЛЕД_АПП део пи датотека.

ИНСТАЛЛЕД_АППС = [

'филтерапп'
]

Д. Направите фасциклу са именом предлошци унутар филтерапп и подесите предлошци локација апликације у ПРЕДЛОЗИ део пи датотека.

ПРЕДЛОЗИ = [

… .
'ДИРС': ['/ хоме / фахмида / дјанго_про / филтерапп / темплатес'],
… .
,
]

Направите модел за табелу базе података

Отвори модели.пи датотека из филтерапп директоријум и додајте следећу скрипту да бисте дефинисали структуру запослени столови. Запослени класа је дефинисана за креирање табеле са именом запослени са име, пошта, е-пошта, одељење, и јоининг_дате поља. Ево, име, пошта, и одељење поља ће чувати податке о знаковима, е-маил поље ће сачувати адресу е-поште и јоининг_дате поље ће чувати податке о датуму.

модели.пи

# Увоз модула модула
од дјанго.дб модели увоза
# Дефинишите класу за креирање табеле запослених
разред Запослени (модели.Модел):
име = модели.ЦхарФиелд (мак_ленгтх = 50)
пост = модели.ЦхарФиелд (мак_ленгтх = 40)
емаил = модели.ЕмаилФиелд ()
одељење = модели.ЦхарФиелд (мак_ленгтх = 30)
јоиннинг_дате = модели.ДатеФиелд ()

Покренути макемигратионс наредба за креирање нове миграције на основу промена које су направили модели.

$ питхон3 управља.пи макемигратионс филтерапп

Покренути мигрирати наредба за извршавање СКЛ наредби и стварање свих табела у бази података које су дефинисане у модели.пи датотека.

$ питхон3 управља.пи мигрирати

Измените садржај админ.пи датотека следећег садржаја. Ево, запослени класа модела регистрована је помоћу регистар () метода за приказ евиденција запослених табеле на контролној табли администрације Дјанго.

админ.пи

# Увоз административног модула
од дјанго.допринос увоз админ
# Увоз модела запосленог
од .модели увоз Запослени
# Региструјте модел запослених
админ.сајт.регистар (запослени)

Покрените следећу УРЛ адресу да бисте отворили страницу за пријављивање администратора Дјанго. Наведите важеће корисничко име и лозинку за отварање Контролна табла администрације Дјанго за приступ табелама базе података.

Уметните два или више записа запослених да бисте применили филтер на податке. Овде је убачено пет записа.

Направите Претрага.хтмл датотека унутар филтерапп / предлошци / директоријум са следећом скриптом. Подаци из запослени табела ће бити приказана у овој датотеци предлошка. за петља се користи за читање садржаја објецт_лист променљива која ће бити прослеђена из датотеке приказа. Тхе име, пошта, и одељење вредности запослени табела ће се приказати помоћу листе.

Претрага.хтмл

<br>Водич за Дјанго филтер<br>

Списак запослених



    % за емп у објецт_лист%

  1. емп.име (емп.пошта )


    емп.одељење одељење



  2. % ендфор%

Отвори погледа.пи датотека из филтерапп директоријум и измените садржај датотеке помоћу следеће скрипте. Називи модела и шаблона дефинисани су у скрипти.

погледа.пи

# Увоз модула ЛистВиев
од дјанго.погледа.генерички увоз ЛистВиев
# Увоз модула запослених
од .модели увоз Запослени
# Увоз К модула
од дјанго.дб.модели увоз К
# Дефинишите класу за филтрирање података
класа СеарцхЕффициее (ЛистВиев):
# Дефинишите модел
модел = Запослени
# Дефинишите шаблон
темплате_наме = 'претрага.хтмл '

Измените садржај урл адресе.пи датотека следећег садржаја. У сценарију, 'сеарцхЕмп'путања је дефинисана за позивање СеарцхЕ Емплоиее.ас_виев () метода која ће послати све податке и филтриране податке запослени табелу у датотеку предлошка.

урл адресе.пи

# Увоз административног модула
од дјанго.допринос увоз админ
# Увезите путању и укључите модул
од дјанго.УРЛ адреса путање увоза, укључи
# Увоз модула СеарцхЕффициее
фром филтерапп.прикази увози СеарцхЕффициее
урлпаттернс = [
# Дефинишите путању за администратора
патх ('админ /', админ.сајт.урлс),
# Дефинишите путању за претрагу
патх ('сеарцхЕмп /', СеарцхЕффициее.ас_виев ()),
]

Следећи излаз ће се појавити без примене било каквог филтрирања за следећу УРЛ адресу.

хттп: // лоцалхост: 8000 / СерацхЕмп

Филтрирање података једноставним филтрирањем

Додајте следећи ред на крају погледа.пи датотека за филтрирање записа запослени табела у којој је вредност пошта поље је 'Рачуновођа'.

# Примени основно филтрирање
куерисет = Запослени.предмета.филтер (пост = 'Рачуновођа')

Следећи излаз ће се појавити након примене основног филтрирања.

Филтрирајте податке са више поља

Додајте следећи ред на крају погледа.пи датотека за филтрирање записа запослени табела у којој је вредност одељење поље је 'ХТ' и имејл поље је '[заштићена е-поштом]'.

# Примени филтрирање са више поља
куерисет = Запослени.предмета.филтер (одељење = 'ХР', емаил = '[заштићен имејлом]')

Следећи излаз ће се појавити након примене вишеструког филтрирања.

Филтрирајте податке помоћу К објекта

Додајте следећи ред на крају погледа.пи датотеку за филтрирање записа запослени табела у којој је вредност пошта поље је 'Менаџерили вредност одељење поље је 'Продаја'.

# Примените филтрирање помоћу К објеката
куерисет = Запослени.предмета.филтер (К (пост = 'Менаџер') | К (одељење = 'Продаја'))

Следећи излаз ће се појавити након примене филтрирања К објекта.

Филтрирајте податке помоћу ланца филтера

Додајте следећи ред на крају погледа.пи датотека за филтрирање записа запослени табела у којој је вредност одељење поље ће се прво проверити, а ако врати труе, вредност поља име поље ће бити проверено.

# Примени филтрирање ланцем
куерисет = Запослени.предмета.филтер (одељење = 'ХР').филтер (наме = 'Мехраб Хоссаин')

Следећи излаз ће се појавити након примене ланца филтера.

Закључак

Подаци се у Дјанго могу филтрирати на више начина на основу захтева апликације. У овом упутству су објашњена четири различита начина филтрирања како би се разумеле основе Дјанго филтрирања. То су једноставно филтрирање, вишеструко филтрирање, филтрирање помоћу К објекта и уланчавање филтера.

Најбоље игре командне линије за Линук
Командна линија није само ваш највећи савезник када користите Линук - она ​​такође може бити извор забаве јер је можете користити за играње многих заб...
Најбоље апликације за мапирање гамепада за Линук
Ако волите да играте игре на Линуку са гамепадом уместо са типичним системом за унос тастатуре и миша, за вас постоје неке корисне апликације. Многе и...
Корисни алати за Линук играче
Ако волите да играте игре на Линуку, велика је вероватноћа да сте можда користили апликације и услужне програме попут Вине, Лутрис и ОБС Студио за поб...