Django

Kako zgraditi osnovno iskanje spletnega mesta Django?

Kako zgraditi osnovno iskanje spletnega mesta Django?

Uporabniki običajno prikrijejo določeno vsebino katerega koli spletnega mesta prek Googlovega iskanja. Če pa je ta možnost iskanja na spletnem mestu implementirana, lahko uporabniki na njej zlahka najdejo želeno vsebino, ne da bi uporabljali Googlovo iskanje ... Druga prednost dodajanja možnosti iskanja znotraj spletnega mesta je, da lahko razvijalec pravilno upravlja z rezultati iskanja. To pomeni, da lahko nadzoruje, katera vsebina strani se bo prikazala ali ne. Ta vadnica bo prikazala postopek izvajanja osnovnega iskanja na spletnem mestu Django.

Pogoji:

Pred vadbo skripta te vadnice morate opraviti naslednje naloge:

  1. Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
  2. Ustvarite projekt Django
  3. Zaženite strežnik Django, da preverite, ali strežnik deluje pravilno ali ne.

Nastavite aplikacijo Django:

Zaženite naslednji ukaz, da ustvarite aplikacijo Django z imenom searchapp.

$ python3 upravljanje.py startapp searchchapp

Zaženite naslednji ukaz, da ustvarite uporabnika za dostop do baze podatkov Django. Če ste uporabnika ustvarili že prej, vam ni treba zagnati ukaza.

$ python3 upravljanje.py ustvarja uporabnika

Dodajte ime aplikacije v del nastavitev INSTALLED_APP.datoteko.

INSTALLED_APPS = [
..
'Searchchapp'
]

Ustvarite mapo z imenom Predloge znotraj mape searchchapp in nastavite lokacijo predloge aplikacije v delu PREDLOGE v nastavitvah.datoteko.

PREDLOGE = [

.. .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
.. .
,
]

Ustvari modele:

Spremenite modele.py z naslednjim skriptom. Tu sta bila določena dva razreda za ustvarjanje dveh relacijskih tabel z imenom knjižne vrste in knjige. Polje vrste tabele knjig je tuji ključ, ki se prikaže iz tabele knjig.

modelov.py

# Uvozite potrebne module
iz djanga.db modeli uvoza
iz djanga.urls import reverse
# Ustvari model gor tip knjige
razred Booktype (modeli.Model):
btype = modeli.CharField (max_length = 100, unique = True)
razred Meta:
naročanje = ('btype',)
# Ustvari model gor book
razred Knjiga (modeli.Model):
ime_knjige = modeli.CharField (največja_dolžina = 150)
ime_ avtorja = modeli.CharField (max_length = 150)
type = modeli.ForeignKey (Vrsta knjige, on_delete = modeli.KASKADA)
cena = modeli.FloatField ()
publikacija = modeli.CharField (max_length = 100)
razred Meta:
ordering = ('ime_knjige',)
def __str __ (samo):
vrni se.ime_knjige
def get_url (self):
vrni obratno ('book_detail', args = [self.id])

Ustvari predloge za iskanje:

Za ustvarjanje funkcije iskanja, prikazane v tej vadnici, so potrebne tri datoteke HTML. To so book_list.html, podrobnosti_knjige.html in iskanje.html. Seznam knjig.html bo prikazal vse zapise iz tabele knjig. Podrobnosti o knjigi.html bo prikazal podrobnosti določene knjige. Iskanje.html bo po oddaji obrazca za iskanje prikazal rezultat iskanja.

seznam_ knjig.html



Seznam knjig










% if type% type.ime % else% Seznam knjig % endif%











% za x v knjigi%

x.ime_knjige


avtor x.avtor_ime


$ x.cena




% endfor%



podrobnosti_knjige.html





knjiga.ime_knjige






knjiga.ime_knjige




Avtor: knjiga.avtor_ime


Vnesite: type


Objava: knjiga.objava


Cena: $ knjiga.cena







Iskanje.html



Rezultat iskanja









% if query%


% z rezultati.štetje kot skupni_rezultati%
Najden total_results rezultat total_results | pluralize
% endwith%


% za c v rezultatih%

c.ime_knjige


c.avtor_ime


% prazno %

Ni zadetkov.


% endfor%
% endif%






Ustvari funkcije pogleda:

Spremenite poglede.py z naslednjim skriptom. V skriptu so opredeljene tri funkcije. Funkcija book_list () bo prikazala book_list.html datoteko. Funkcija book_detail () bo prikazala book_detail.html. Funkcija search () bo iskala zapise na podlagi podatkov, ki jih predloži iskalni obrazec, in rezultat prikazala v iskanju.html.

pogledi.py

# Uvozite potrebne module
iz djanga.bližnjice uvozi upodabljanje, get_object_or_404
iz .modeli uvozijo Book, Booktype
iz djanga.db.modeli uvoz Q
# Določite funkcijo za prikaz vseh knjig
def book_list (zahteva):
book = Knjiga.predmetov.vse ()
vrnitev upodabljanja (zahteva, 'book_list.html ', ' knjiga ': knjiga)
# Določite funkcijo za prikaz določene knjige
def book_detail (zahteva, id):
book = get_object_or_404 (Book, id = id)
vrste = vrsta knjige.predmetov.vse ()
t = vrste.get (id = knjiga.tip.id)
vrnitev upodabljanja (zahteva, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Določite funkcijo za iskanje po knjigi
def iskanje (zahteva):
rezultati = []
če zahteva.metoda == "PRIDOBI":
poizvedba = zahteva.GET.get ('iskanje')
če je poizvedba == ":
query = 'Brez'
rezultati = Rezerviraj.predmetov.filter (Q (ime_knjige__contains = poizvedba) | Q (ime_ avtorja__icontains = poizvedba) | Q (cena__kontejne = poizvedba))
vrni upodabljanje (zahteva, 'iskanje.html ', ' poizvedba ': poizvedba,' rezultati ': rezultati)

Nastavite poti za funkcije pogleda klica:

Spremenite URL-je.py projekta Django z naslednjim skriptom. V skriptu so določene štiri poti. Pot 'admin /' se uporablja za odpiranje skrbniške nadzorne plošče Django. Prazna pot (") se uporablja za klic funkcije book_list (). "/ 'pot se uporablja za klic funkcije book_detail (). Pot 'search /' se uporablja za klic funkcije search ().

URL-ji.py

# Uvozi skrbniški modul
iz djanga.prispevaj uvoz admin
# Uvoz modula poti
iz djanga.pot za uvoz URL-jev
# Uvozi pogled
iz pogledov uvoza searchapp
# Določite poti
urlpatterns = [
pot ('admin /', admin.spletnem mestu.urls),
pot (", pogledi.book_list, name = 'book_list'),
pot ('/', pogledi.book_detail, name = 'book_detail'),
pot ('iskanje /', pogledi.iskanje, ime = 'iskanje'),
]

Zaženite aplikacijo iz brskalnika:

Zaženite naslednji ukaz za zagon strežnika Django.

$ python3 upravljanje.py runserver

Zaženite naslednji URL iz katerega koli brskalnika, da prikažete seznam knjig iz tabele.

http: // localhost: 8000

Če uporabnik klikne povezavo »PHP in MySQL za dinamična spletna mesta«, se bodo podrobnosti te knjige prikazale v brskalniku.

Če uporabnik v brskalniku išče besedo, fiziko, se v brskalniku prikaže naslednji rezultat iskanja.

Zaključek:

V tej vadnici je bila uporabljena aplikacija Django z osnovno možnostjo iskanja z uporabo tabel baz podatkov. Novi razvijalci Django bodo lahko po branju te vadnice na svojem spletnem mestu implementirali funkcijo iskanja.

Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...
Kako namestiti League Of Legends na Ubuntu 14.04
Če ste ljubitelj League of Legends, je to priložnost, da preizkusite League of Legends. Upoštevajte, da LOL podpira PlayOnLinux, če uporabljate Linux....
Namestite najnovejšo strategijo igre OpenRA v Ubuntu Linux
OpenRA je Libre / Free Real Time strateški stroj, ki poustvarja zgodnje igre Westwood, kot je klasična Command & Conquer: Red Alert. Porazdeljeni modi...