Te ei pea Djangos nälkjate loomisega vaeva nägema. Rakendage automaatset nälkjate genereerimist, et säästa aega ja tõhustada oma töövoogu.

Veebiarendajana on veebirakenduse kasutuskogemuse optimeerimine ülioluline. Kasutajakogemuse ja otsingumootori nähtavuse parandamiseks kasutage Djangos kasutajasõbralikke URL-e, millel on nälkjad. Sluugidega URL-ide loomine on sama lihtne kui funktsiooni kirjutamine, mis võimaldab teil luua sisutihedaid ja kirjeldavaid URL-e, millest on kasutajatel ja otsingumootoritel lihtne aru saada. See suurendab kasutatavust ja juurdepääsetavust, tõstes samal ajal otsingumootorite paremusjärjestust.

Selles artiklis kasutatud koodinäited leiate siit GitHubi hoidla.

Django projekti loomine

Django pakub mitmeid meetodeid nälkjate genereerimiseks ja nende kasutamiseks oma veebisaidil. Et illustreerida nälkjate rakendamise erinevaid viise, juhendab see õpetus teid lihtsa ajaveebi veebirakenduse loomisel.

Enne Django projekti loomist luua ja aktiveerida virtuaalset keskkonda

instagram viewer
vajalike sõltuvuste installimiseks. Pärast virtuaalse keskkonna aktiveerimist järgige projekti seadistamiseks järgmisi samme.

  • Installige Django, kasutades käsureal käsku pip:
pip install django
  • Looge projekt, kasutades django-admin kasulikkust. See õpetus kasutab projekti_tuum projekti nimena.
django-admin startproject projekti_tuum .
  • Looge rakendus nimega retseptid.
python manage.py startapp retseptid
  • Lisage oma rakendus oma projekti installitud rakenduste hulka setting.py faili.
INSTALLED_APPS = [
'...'
"retseptid",
]
  • Käivitage oma rakendus, tippides käsurea tööriistas järgmise käsu:
python manage.py runserver
  • Navigeerige http://127.0.0.1:8000/ oma brauseris. Peaksite nägema seda lehte:
  • Konfigureerige oma projektis URL-i muster urls.py faili
alates django.urls importida tee, kaasa

urlmustrid = [
'...',
tee ('', sisaldab('recipes.urls'))
]

Nälkjas loomine Djangos

Djangos nälkja genereerimiseks peate oma mudelitesse lisama nälkjavälja. Järgige neid samme, et luua Django nälkjas.

Looge mudel

Sinu mudelid.py faili, looge uus mudel ja lisage nälkjaväli. Siin on näide:

klassRetsept(mudelid. mudel):
nimi = mudelid. CharField (max_length=225, tühi=Vale, null=Vale)
koostisained = mudelid. Tekstiväli (tühi =Vale, null=Vale)
juhised = mudelid. Tekstiväli (tühi =Vale, null=Vale)
date_created = mudelid. DateTimeField (auto_now=Tõsi)
nälkjas = mudelid. SlugField (null = Tõsi, tühi=Tõsi, ainulaadne=Tõsi)

Ülaltoodud näites mudel Retsept sisaldab välja nimega nälkjas. The nälkjas väljal on atribuudid, null ja tühi seatud Tõsi.

Rakendage oma mudelile migratsioone

Pärast mudeli loomist peaksite oma andmebaasis tabeli loomiseks käivitama käsurea tööriistas järgmise käsu:

python manage.py makemigrations && python manage.py migre

Ülaltoodud käsk genereerib esmalt migratsioonifaili ja seejärel värskendab andmebaasi, täites migratsioonifailis olevaid juhiseid.

Lisage andmed oma andmebaasi

Registreerige oma mudel, sisestades omasse järgmine tekst admin.py fail:

alates django.contrib importida admin
alates .mudelid importida Retsept

admin.site.register (retsept)

Järgmisena avage käsurea tööriist ja looge a superkasutaja oma administraatoripaneeli jaoks, käivitades selle käsu:

python manage.py loob superkasutaja

Ülaltoodud käsk viib teid läbi sellel pildil kujutatud sammude:

Pärast loomist a superkasutaja, käivitage oma kohalik server järgmise käsuga:

python manage.py runserver

Kui teie server käivitub, peaksite navigeerima aadressile http://127.0.0.1:8000/admin/, logige sisse nende andmetega, mida kasutasite a superkasutajaja lisage mõned retseptid käsitsi oma andmebaasi. Peaksite tähelepanu pöörama nälkjaväljale.

Looge oma rakendusele vaateid

Ava oma views.py faili ja looge oma rakenduse jaoks kaks vaadet. Esimeses vaates kuvatakse lihtsalt ülevaade teie retseptidest, teises aga iga retsepti kohta rohkem üksikasju. Saate oma projektis kasutada neid vaateid:

alates django.otseteed importida renderda, hanki_objekt_või_404
alates .mudelid importida Retsept

# Retseptide loendivaade
defretsepti_loend(taotlus):
retseptid = Retsept.objektid.kõik()
tagasi renderdama (päring, 'recipes/recipe_list.html', {"retseptid":retseptid})

# Üksikasjalik vaade iga retsepti kohta
defretsepti_detail(taotlus, retsept_nälkjas):
retsept = hanki_objekt_või_404(retsept, nälkjas = retsepti_nälkjas)
tagasi renderdama (päring, 'recipes/recipe_detail.html', {'retsept': retsept})

Ülaltoodud koodilõigul on retsepti_loend vaade tagastab mallile kõigi retseptide loendi. Teisest küljest, retsepti_detail vaade tagastab mallile ühe retsepti. See vaade võtab kasutusele täiendava parameetri nimega retsept_nälkjas mida kasutatakse nälkja hankimiseks konkreetse retsepti jaoks.

Seadistage oma vaadete jaoks URL-i mustrid

Teie rakenduste kataloogis (või retsept kaust), looge fail nimega urls.py oma rakendusele URL-i teede lisamiseks. Siin on näide:

alates django.urls importida tee
alates .vaateid importida retseptide_loend, retsepti_detail

urlmustrid = [
tee ('', retseptide_loend, nimi="retsepti kodu"),
tee ('retsept//', retsepti_detail, nimi='retsepti_detail'),
]

Ülaltoodud koodilõigul lisab teine ​​tee lehe URL-i nälkja.

Looge oma rakenduse jaoks malle

Retseptide kuvamiseks brauseris looge oma vaadete jaoks mallid. Üks mall peaks olema jaoks retsepti_loend vaade, samas kui teine ​​peaks olema retsepti_detail vaade. Nälkja kasutamiseks oma mallis järgige seda vormingut, {% url 'vaate_nimi' retsept.slug %}. Siin on kaks näidet, mida saate oma koodis kasutada.

 retseptid/retseptide_loend.html 
{% extends 'base.html' %}

{% blokeerida sisu %}
<h1klass="minu-5 tekstikeskus">Retseptidh1>
<Keskus>
<ulklass="list-group w-75">
{% retseptide jaoks %}
<liklass="loendirühma-üksus minu-3">
<h2klass="mb-3">
<ahref="{% url 'retsepti_detail' retsept.slug %}">
{{ retsepti.nimi }}
a>
h2>
<lkklass="w-50">
Koostis: {{ retsept.koostisosad }}
lk>
<lkklass="tekst vaigistatud">
Loodud: {{ recept.date_created }}
lk>
li>
{% tühi %}
<liklass="loendirühma üksus">Retsepte ei leitud.li>
{% endfor %}
ul>
Keskus>
{% endblock %}

Ülaltoodud HTML-mall loetleb kõik teie andmebaasis olevad retseptid ja kuvab Retsepte ei leitud kui retsepte pole. See kasutab stiili kujundamiseks Bootstrapi klasse. Saate õppida, kuidas kasutage Bootstrapi koos Djangoga. Ülaltoodud mall peaks brauseris välja nägema järgmine:

 retseptid/retsepti_detail.html 
{% extends 'base.html' %}

{% blokeerida sisu %}
<Keskus>
<divklass="w-75">
<h1klass="mt-5 mb-4">{{ retsepti.nimi }}h1>
<h3>Koostisainedh3>
<lk>{{ retsept.koostisosad }}lk>
<h3>Juhisedh3>
<lk>{{ retsepti.juhised }}lk>
<lkklass="tekst vaigistatud">Loodud: {{ recept.date_created }}lk>
div>
Keskus>
{% endblock %}

Ülaltoodud HTML-mall tagastab konkreetse retsepti üksikasjad. Brauseris peaks ülaltoodud leht välja nägema järgmine:

Märkate, et URL sisaldab nüüd iga retsepti jaoks andmebaasi lisatud nälkjaid. Kui te ei mõista, kuidas mallisüsteem töötab, peaksite esmalt õppima malli pärimine Djangos ja Django MVT arhitektuur.

Looge Djangos nälkjas automaatselt

Nälkjate puhul soovite tõesti need automaatselt genereerida teie mudeli välja põhjal. Selleks peate muutma salvesta () meetodit ja määrake oma reeglid enne objektide andmebaasi salvestamist. Siin on lihtne näide, mille saate oma mudeliklassi lisada:

# import slugify
alates django.template.defaultfilters importida loid

defsalvestada(ise, *args, **kwargs):
kuimitte self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Ülaltoodud funktsioon kontrollib esmalt, kas mudeliobjekti jaoks on nälkjas olemas. Kui nälkjat pole, kasutab see loid funktsioon mudeli nimeväljalt selle genereerimiseks. Pärast alistamist salvesta () meetodil, avage oma administraatoripaneel ja lisage mõned retseptid. Seekord ei pea te nälkjavälja täitma, sest see täidetakse pärast retsepti salvestamist automaatselt.

Kui navigeerite äsja lisatud retsepti üksikasjade lehele, näete, et URL kasutab nälkjana retsepti nime.

Mõnikord on teil mitu sama nimega retsepti ja see põhjustab teie nälkjas vigu. Saate selle parandada, lisades oma nälkjale ainulaadse elemendi, näiteks loomise kuupäeva. Siin on lihtne näide:

self.slug = slugify (self.name + "-" + str (self.date_created))

Kasutage URL-i kasutuskogemuse parandamiseks nälkjaid

Erinevalt vanast heast pk, pakuvad nälkjad palju eeliseid, sealhulgas paindlikkust ja kaasaskantavust, kuna need ei ole seotud konkreetsete URL-i identifikaatoritega, näiteks primaarvõtmega. Seega, kui muudate oma andmebaasi struktuuri või viite oma andmed üle, saate siiski säilitada ühtsed URL-id. Nälkjad suurendavad ka SEO-sõbralikkust.