Integrálja a keresési funkciót Django alkalmazásába ennek a lépésről lépésre történő útmutatónak a segítségével.

Ha keresési funkciót ad hozzá webalkalmazásához, a felhasználók könnyen navigálhatnak azokban, és rákereshetnek arra, amit keresnek. A Django beépített támogatást nyújt a keresési funkciók felépítéséhez a hatékony ORM és lekérdező eszközök használatával. A Django segítségével különféle típusú kereséseket hajthat végre, beleértve a kulcsszavas kereséseket, az egyszerű kereséseket és a szűrőkkel ellátott speciális kereséseket.

Keresési funkciók megvalósítása a Django-ban

A Django beépített metódusaival és funkcióival lehetővé teszi különböző típusú keresések megvalósítását. A használati esettől függően egyszerű kulcsszavas keresést vagy speciális keresést is megvalósíthat. Speciális keresést érdemes megvalósítani, ha összetett alkalmazással, például e-kereskedelmi weboldallal rendelkezik, míg az egyszerű kulcsszavas keresés kevésbé összetett projektekhez megfelelő.

A cikkben használt kód megtalálható a GitHub és az MIT licence alapján ingyenesen használható.

instagram viewer

Valósítson meg egy egyszerű kulcsszókeresést a Django-ban

Egy egyszerű keresési funkció létrehozásához kezdje a keresősáv felépítésével. A keresősávot létrehozhatja a navigációs sávban. Bootstrap kész navigációs sávot biztosít keresősávval, és egyszerűen integrálja a Bootstrap-et és összetevőit a Django projektbe. Hozza létre a keresősávot egy HTML-fájlban, és állítsa be az űrlapmódszert POST, és adja meg a beviteli mezőt a név attribútum, mint ez:

<formaosztály="d-flex"szerep="keresés"módszer="POST">
 {% csrf_token %}
<bemenet
class="form-control me-NN"
type="search"
placeholder="Keresés"
name="search_query"
kötelező aria-label="Keresés"
 >
<gombosztály="btn btn-outline-siker"típus="Beküldés">Keresésgomb>
forma>

A fenti kódban a beviteli mező neve a keresési_lekérdezés. Az űrlap kihasználja Django CSRF tokenje nak nek megakadályozza a CSRF támadásokat. A keresősáv működéséhez kövesse az alábbi lépéseket.

Hozzon létre egy nézetet a kereséshez

  • Nyissa meg views.py fájlt, és importálja a modellt a modellek.py fájl:
tól től .modellek import Modell név
  • Hozzon létre egy nézet funkciót a keresési funkcióhoz:
defkeresési_funkció(kérés):
# Ellenőrizze, hogy a kérés postázási kérelem-e.
ha kérés.módszer == 'POST':
# A felhasználó által beírt keresési lekérdezés lekérése
keresési_lekérdezés = kérés. POST['search_query']
# Szűrje a modellt a keresési lekérdezés alapján
posts = Model.objects.filter (fieldName__contains=search_query)
Visszatérés render (kérés, "app/template_name.html", {'lekérdezés':search_query, "bejegyzések":posts})
más:
Visszatérés render (kérés, "app/template_name.html",{})

A fenti funkció először ellenőrzi, hogy a kliens küld-e a POST kérés. Ha az ellenőrzés sikeres, akkor a következőképpen kéri le a felhasználó keresési lekérdezésének értékét:

keresési_lekérdezés = kérés. POST['search_query']

Kérésre. POST['search_query'], „keresési_lekérdezés” le kell cserélni a keresősáv beviteli mezőjének nevével.

A felhasználó keresési lekérdezésének értékének lekérése után a függvény a modell segítségével szűri a modellt __tartalmazza módszer. A __tartalmazza módszer nem érzékeny a kis- és nagybetűkre. A módszer használatához a következő formátumot kell követnie:

fieldName__contains

Például, ha azt szeretné, hogy a felhasználók egy modellmező alapján keressenek név, módosítania kell a kódot, hogy így nézzen ki:

name__contains=keresési_lekérdezés

Végül a függvény egy sablont jelenít meg, és kontextusként átadja a keresési lekérdezést és a szűrt modellt.

Ha azonban az űrlap metódusa nem a POST kérés esetén a függvény egy üres szótárral rendelkező sablont jelenít meg, és nem dolgozza fel a keresési lekérdezést.

Hozzon létre egy sablont a keresési eredményhez

  • Hozzon létre egy HTML-fájlt a keresési eredmények ügyféloldali megjelenítéséhez.
  • Írja ki a keresési eredményt az oldalon, hogy a felhasználó lássa. A HTML-fájlban lévő kódnak így kell kinéznie:
{% if query %}
<div>
<div>
végigpörgeti a keresési lekérdezést
{% a bejegyzésekhez %}
<div>
vissza a keresési lekérdezést
<p>{{postai cím}}p>
div>
{% endfor %}
div>
div>
{% más %}
üzenetet ad vissza, ha a felhasználó nem ír be keresési lekérdezést
<h1>Kérjük, írjon be egy keresési lekérdezésth1>
{% endif %}

A fenti HTML-sablon ellenőrzi, hogy a felhasználó beír-e keresési lekérdezést a keresősávba. Ha a felhasználó beír egy keresési lekérdezést, a hurokhoz végighurkolja a keresési eredményeket, és visszaadja azokat a felhasználónak. Ha nincs keresési lekérdezés, egy üzenet jelenik meg a felhasználó számára, hogy adja meg a keresési lekérdezést. Előfordulhat, hogy nincs keresési lekérdezés, ha a felhasználó közvetlenül az URL-re megy anélkül, hogy kitöltené a keresősávot, azaz a felhasználó beír egy URL-t, például mywebsite.com/search közvetlenül a böngészőbe. Biztosítania kell, hogy használja Django sablon öröklődése HTML-fájljában.

  • Módosítsa a HTML-kódot, hogy hibaüzenetet adjon vissza, ha nincs keresési eredmény.
{% if query %}
<div>
<div>
ellenőrizze, hogy van-e eredmény az adatbázisban
{% if posts %}
Ha van eredmény, akkor a keresési lekérdezésben ismételje meg a ciklust
{% a bejegyzésekhez %}
<div>
vissza a keresési lekérdezést
<p>{{postai cím}}p>
div>
{% endfor %}
üzenetet küld, ha nem található eredmény.
{% más %}
<h3>Nem található keresési eredményh3>
{% endif %}
div>
div>
{% más %}
<h1>Kérjük, írjon be egy keresési lekérdezésth1>
{% endif %}

Az új HTML-sablon jobb felhasználói élményt tesz lehetővé. Feltételes utasítást vezet be annak ellenőrzésére, hogy elérhető-e keresési eredmény az adatbázisban. Ha van, megjeleníti a keresési eredményt; ellenkező esetben hibaüzenetet küld a felhasználónak.

Konfigurálja az URL-mintákat

  • Ha még nem tette meg, hozzon létre a urls.py fájlt az alkalmazáskönyvtárban.
  • A tiédben urls.py, fájl hozzon létre egy URL-mintát a keresőoldalhoz:
tól től django.urls import pálya
tól től. import nézetek

urlpatterns = [
pálya('keresés/', views.search_feature, name='search-view'),
]

A fenti program először importálja a pálya funkció és a nézetek az alkalmazáshoz kapcsolódó fájl. Ezután létrehoz egy nevű útvonalat kereső-nézet a keresőoldalhoz.

  • Adjon hozzá egy űrlapműveletet a keresősávhoz. A művelet URL-jének a keresési nézethez rendelt URL-útvonalra kell mutatnia. Ebben az esetben az űrlap arra mutat kereső-nézet.
<formaosztály="d-flex"szerep="keresés"módszer="POST"akció="{% url 'search-view' %}">
<bemenet
class="form-control me-NN"
type="search"
placeholder="Keressen valamit"
name="search_query"
kötelező aria-label="Keresés"
>
<gombosztály="btn btn-outline-siker"típus="Beküldés">Keresésgomb>
forma>

A keresési URL-útvonalra mutató űrlapművelet nélkül a keresési funkció nem fog működni. Ne feledje, hogy a keresési URL-útvonalnak a keresési funkció logikáját kezelő Django nézetre kell mutatnia.

Hozzon létre egy keresési funkciót több modellmezőhöz

Ha javítani szeretné webalkalmazása felhasználói élményét, engedélyezheti a felhasználók számára, hogy a modellben egynél több mező alapján keressenek. Például egy blogalkalmazásban azt szeretné, hogy a felhasználó a bejegyzések címei vagy a szerzők neve alapján keressen.

A funkció megvalósításához használja a K a Django által biztosított objektum. Importálnia kell a K tárgyat a te views.py ilyen fájl:

tól től django.db.models import K

Az importálás után K, akkor a következőképpen kell módosítania a nézet függvényét:

defsearch_post(kérés):
ha kérés.módszer == 'POST':
keresési_lekérdezés = kérés. POST['search_query']
posts = Post.objects.filter (Q(title__icontains=search_query) | Q(author__icontains=search_query))
Visszatérés render (kérés, "app/template_name.html", {'lekérdezés':search_query, "bejegyzések":posts})
más:
Visszatérés render (kérés, "app/template_name.html",{})

A fenti programban a hozzászólások változó szűri a modellt a bejegyzés címe vagy a szerző neve alapján. A függvény a VAGY operátor – ebben az esetben egy csőszimbólum – a szűrő végrehajtásához.

A felhasználói élmény javítása keresési funkcióval

A webalkalmazásban található keresési funkció hatékonyan javítja a felhasználói élményt és az általános használhatóságot. A Django-val csak a beépített funkciókat kell kihasználnia, hogy a keresési funkció működjön, jelentős előnyöket biztosítva Önnek és felhasználóinak.