Käyttäjät noutavat normaalisti minkä tahansa sivuston tietyn sisällön Google-haun kautta. Jos tämä hakuvaihtoehto on kuitenkin otettu käyttöön verkkosivustolla, käyttäjät voivat helposti löytää haluamasi sisällön sivustolta käyttämättä Google-hakua ... Toinen etu hakuvaihtoehdon lisäämisestä verkkosivustolle on, että kehittäjä voi hallita hakutulosta oikein. Tämä tarkoittaa, että hän voi hallita, mikä sivuston sisältö näkyy vai ei. Tässä opetusohjelmassa näytetään Django-sivuston perushaun toteutusprosessi.
Edellytykset:
Ennen tämän opetusohjelman komentosarjan käyttämistä sinun on suoritettava seuraavat tehtävät:
- Asenna Django-versio 3+ Ubuntu 20+ -käyttöjärjestelmään (mieluiten)
- Luo Django-projekti
- Suorita Django-palvelin varmistaaksesi, että palvelin toimii oikein.
Django-sovelluksen määrittäminen:
Suorita seuraava komento luoda Django-sovellus nimeltä Searchapp.
$ python3 hallita.py startapp searchappSuorita seuraava komento, jos haluat luoda käyttäjän Django-tietokantaan. Jos olet luonut käyttäjän aiemmin, sinun ei tarvitse suorittaa komentoa.
$ python3 hallita.py luo ylikäyttäjäLisää sovelluksen nimi asetusten INSTALLED_APP-osaan.py-tiedosto.
INSTALLED_APPS = […
'searchapp'
]
Luo kansio nimeltä mallipohjat searchapp-kansioon ja aseta mallin sijainti sovelluksessa mallien osassa asetuksia.py-tiedosto.
MALLIT = [… .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
… .
,
]
Luo malleja:
Muokkaa malleja.py-tiedosto seuraavalla komentosarjalla. Täällä on määritelty kaksi luokkaa luomaan kaksi relaatiotaulukkoa nimeltä kirjatyypit ja kirjat. Kirjat-taulukon tyyppikenttä on vieras avain, joka ilmestyy kirjatyyppitaulukosta.
malleja.py
# Tuo tarvittavat moduulitalkaen django.db-tuontimallit
alkaen django.URL-osoitteiden tuonti päinvastoin
# Luo malli gor booktype
luokan Booktype (mallit.Malli):
btype = mallit.CharField (enimmäispituus = 100, ainutlaatuinen = tosi)
luokka Meta:
tilaus = ('btype',)
# Luo mallikirja
luokan kirja (mallit.Malli):
kirjan_nimi = mallit.CharField (enimmäispituus = 150)
tekijän_nimi = mallit.CharField (enimmäispituus = 150)
tyyppi = mallit.ForeignKey (Kirjatyyppi, on_delete = mallit.RYÖPYTÄ)
hinta = mallit.Kellukenttä ()
julkaisu = mallit.CharField (enimmäispituus = 100)
luokka Meta:
tilaus = ('kirjan_nimi',)
def __str __ (itse):
palaa itse.kirjan_nimi
def get_url (itse):
return reverse ('kirja_tiedot', args = [itse.id])
Luo malleja hakua varten:
Tässä opetusohjelmassa näytetyn hakuominaisuuden luomiseen tarvitaan kolme HTML-tiedostoa. Nämä ovat book_list.html, book_detail.html ja etsi.html. Book_list.html näyttää kaikki kirjat taulukon tietueista. Kirja_tiedot.html näyttää tietyn kirjan tiedot. Etsintä.html näyttää hakutuloksen lähetettyään hakulomakkeen.
book_list.html
kirja_tiedot.html
kirja.kirjan_nimi
Kirjoittaja: kirja.tekijän_nimi
Tyyppi: type
Julkaisu: kirja.julkaisu
Hinta: $ kirja.hinta
Hae.html
% jos kysely%
% tuloksilla.lasketaan yhteensä_tuloksiksi%
Löydetty total_results tulos total_results | pluralize
% endwith%
% tulokselle c tuloksissa%
c.kirjan_nimi
c.tekijän_nimi
% tyhjä%
Ei tuloksia.
% endfor%
% loppu Jos %
Luo näkymän toiminnot:
Muokkaa näkymiä.py-tiedosto seuraavalla komentosarjalla. Skriptissä on määritelty kolme toimintoa. Book_list () -toiminto näyttää book_list.html-tiedosto. Book_detail () -toiminto näyttää kirjan_detail.html. Search () -toiminto etsii tietueita hakulomakkeen lähettämien tietojen perusteella ja näyttää tuloksen haulla.html.
näkymät.py
# Tuo tarvittavat moduulitalkaen django.pikavalinnat tuo renderöinnin, get_object_or_404
alkaen .mallit tuovat kirjan, kirjatyypin
alkaen django.db.mallit tuovat Q
# Määritä toiminto näyttää kaikki kirjat
def book_list (pyyntö):
kirja = kirja.esineitä.kaikki()
return render (pyyntö, 'book_list.html ', ' kirja ': kirja)
# Määritä toiminto tietyn kirjan näyttämiseksi
def book_detail (pyyntö, id):
kirja = get_object_or_404 (kirja, id = id)
tyypit = Kirjatyyppi.esineitä.kaikki()
t = tyypit.get (id = kirja.tyyppi.id)
return render (pyyntö, 'book_detail.html ', ' kirja ': kirja,' tyyppi ': t.btype)
# Määritä kirjahakutoiminto
def haku (pyyntö):
tulokset = []
jos sitä pyydetään.method == "GET":
kysely = pyyntö.SAADA.get ('haku')
jos kysely == ":
kysely = Ei mitään
tulokset = kirja.esineitä.suodatin (Q (kirjan_nimi__sisältää = kysely) | Q (tekijän_nimi__sisältää = kysely) | Q (hinta_sisältää = kysely))
return render (pyyntö, 'haku.html ', ' query ': query,' results ': results)
Aseta puhelunäkymän polut:
Muokkaa URL-osoitteita.Django-projektin py-tiedosto seuraavalla komentosarjalla. Käsikirjoituksessa on määritelty neljä polkua. 'admin /' -polkua käytetään Django-hallintakeskuksen avaamiseen. Tyhjää polkua (") käytetään funktion book_list () kutsumiseen. '
URL-osoitteet.py
# Tuo hallintamoduulialkaen django.contrib tuonti järjestelmänvalvoja
# Tuo polkumoduuli
alkaen django.URL-osoitteiden tuontipolku
# Tuo näkymä
hakusovelluksen tuontinäkymistä
# Määritä polut
urlpatterns = [
polku ('admin /', admin.sivusto.URL-osoitteet),
polku (", näkymät.book_list, name = 'book_list'),
polku ('/', näkymät.kirjan_tiedot, nimi = 'kirjan_tiedot'),
polku ('haku /', näkymät.haku, nimi = 'haku'),
]
Suorita sovellus selaimesta:
Suorita seuraava komento Django-palvelimen suorittamiseksi.
$ python3 hallita.py juoksupalvelinSuorita seuraava URL-osoite mistä tahansa selaimesta näyttääksesi luettelon kirjoista taulukossa.
http: // localhost: 8000
Jos käyttäjä napsauttaa linkkiä "PHP ja MySQL dynaamisille verkkosivustoille", tämän kirjan tiedot näkyvät selaimessa.
Jos käyttäjä hakee sanaa, fysiikkaa selaimessa, seuraava hakutulos näkyy selaimessa.
Päätelmä:
Django-sovellus, jolla on perushakuvaihtoehto, on otettu käyttöön tässä opetusohjelmassa tietokantataulukoiden avulla. Uudet Django-kehittäjät voivat ottaa hakutoiminnon käyttöön verkkosivustollaan tämän opetusohjelman lukemisen jälkeen.