Sinun ei tarvitse vaivautua luodaksesi etanoita Djangossa. Ota käyttöön automaattinen etanan luominen säästääksesi aikaa ja virtaviivaistaaksesi työnkulkuasi.

Verkkokehittäjänä verkkosovelluksesi käyttökokemuksen optimointi on ratkaisevan tärkeää. Voit parantaa käyttökokemusta ja hakukoneen näkyvyyttä käyttämällä Djangossa käyttäjäystävällisiä URL-osoitteita. URL-osoitteiden luominen etanoilla on yhtä helppoa kuin funktion kirjoittaminen. Sen avulla voit luoda tiiviitä ja kuvaavia URL-osoitteita, jotka käyttäjien ja hakukoneiden on helppo ymmärtää. Tämä parantaa käytettävyyttä ja saavutettavuutta ja parantaa sijoituksia hakukoneissa.

Tässä artikkelissa käytetyt koodiesimerkit löytyvät tästä GitHub-arkisto.

Django-projektin luominen

Django tarjoaa useita tapoja luoda etanoita ja käyttää niitä verkkosivustollasi. Tämä opetusohjelma opastaa sinua luomaan yksinkertaisen blogiverkkosovelluksen, jotta voit havainnollistaa erilaisia ​​tapoja toteuttaa etanoita.

Ennen kuin aloitat Django-projektin,

instagram viewer
luoda ja aktivoida virtuaalinen ympäristö asentaaksesi tarvittavat riippuvuudet. Kun olet aktivoinut virtuaaliympäristösi, määritä projekti seuraavasti:

  • Asenna Django käyttämällä komentorivin pip-komentoa:
pip asennus django
  • Luo projekti käyttämällä django-admin apuohjelma. Tämä opetusohjelma käyttää projektin_ydin projektin nimeksi.
django-admin aloitusprojektin_ydin .
  • Luo sovellus nimeltä reseptejä.
python manage.py startapp reseptit
  • Lisää sovelluksesi projektisi asennettuihin sovelluksiin setting.py tiedosto.
INSTALLED_APPS = [
'...'
"reseptit",
]
  • Suorita sovellus kirjoittamalla seuraava komento komentorivityökaluun:
python manage.py runserver
  • Navigoida johonkin http://127.0.0.1:8000/ selaimessasi. Sinun pitäisi nähdä tämä sivu:
  • Määritä URL-malli projektissasi urls.py tiedosto
alkaen django.urls tuonti polku, sisältää

urlpatterns = [
'...',
polku ('', sisältää("reseptit.urls"))
]

Slugin luominen Djangossa

Jotta voit luoda etanan Djangossa, sinun on sisällytettävä etanakenttä malleihisi. Seuraa näitä ohjeita luodaksesi etanan Djangoon.

Luo malli

Sinun mallit.py tiedosto, luo uusi malli ja sisällytä etanakenttä. Tässä on esimerkki:

luokkaaResepti(mallit. Malli):
nimi = mallit. CharField (max_length=225, tyhjä=Väärä, null=Väärä)
ainesosat = mallit. Tekstikenttä (tyhjä =Väärä, null=Väärä)
ohjeet = mallit. Tekstikenttä (tyhjä =Väärä, null=Väärä)
luomispäivä = mallit. DateTimeField (auto_now=Totta)
etana = mallit. SlugField (nolla = Totta, tyhjä=Totta, ainutlaatuinen=Totta)

Yllä olevassa esimerkissä malli Resepti sisältää kentän nimeltä etana. The etana kentässä on attribuutit, tyhjä ja tyhjä asetettu Totta.

Käytä siirtoja malliisi

Kun olet luonut mallin, sinun tulee suorittaa seuraava komento komentorivityökalussa luodaksesi taulukon tietokantaan:

python manage.py makemigrations && python manage.py migrate

Yllä oleva komento luo ensin siirtotiedoston ja päivittää sitten tietokannan suorittamalla siirtotiedoston sisällä olevat ohjeet.

Lisää tietoja tietokantaasi

Rekisteröi mallisi kirjoittamalla seuraavat tiedot admin.py tiedosto:

alkaen django.contrib tuonti järjestelmänvalvoja
alkaen .malleja tuonti Resepti

admin.site.register (resepti)

Avaa seuraavaksi komentorivityökalu ja luo a superkäyttäjä hallintapaneelillesi suorittamalla tämä komento:

python manage.py createsuperuser

Yllä oleva komento vie sinut läpi tässä kuvassa kuvatut vaiheet:

Luomisen jälkeen a superkäyttäjä, käynnistä paikallinen palvelin seuraavalla komennolla:

python manage.py runserver

Kun palvelimesi käynnistyy, sinun tulee navigoida osoitteeseen http://127.0.0.1:8000/admin/, kirjaudu sisään tiedoilla, joita käytit luodessasi a superkäyttäjäja lisää manuaalisesti joitain reseptejä tietokantaasi. Sinun tulee kiinnittää huomiota etanan kenttään.

Luo näkymiä sovelluksellesi

Avaa sinun views.py tiedosto ja luo kaksi näkymää sovelluksellesi. Ensimmäinen näkymä näyttää vain yleiskatsauksen resepteistäsi, kun taas toisessa näytetään lisätietoja jokaisesta reseptistä. Voit käyttää näitä näkymiä projektissasi:

alkaen django.shortcuts tuonti renderöi, get_object_or_404
alkaen .malleja tuonti Resepti

# Reseptien luettelonäkymä
defreseptilista(pyyntö):
reseptit = Resepti.objects.all()
palata renderöi (pyyntö, "reseptit/reseptilista.html", {"reseptit":reseptit})

# Yksityiskohtainen näkymä jokaiselle reseptille
defresepti_yksityiskohta(pyyntö, resepti_etana):
resepti = hanki_objekti_tai_404(resepti, etana=resepti_etana)
palata renderöi (pyyntö, 'recipes/recipe_detail.html', {'resepti': resepti})

Yllä olevassa koodinpätkässä reseptilista näkymä palauttaa luettelon kaikista resepteistä malliin. Toisaalta, resepti_yksityiskohta näkymä palauttaa malliin yhden reseptin. Tämä näkymä ottaa käyttöön lisäparametrin nimeltä resepti_etana jota käytetään etanan saamiseen tiettyä reseptiä varten.

Määritä URL-mallit näkymillesi

Sovellushakemistossasi (tai resepti kansio), luo tiedosto nimeltä urls.py lisätäksesi sovelluksesi URL-polut. Tässä on esimerkki:

alkaen django.urls tuonti polku
alkaen .views tuonti reseptiluettelo, reseptitiedot

urlpatterns = [
polku ('', reseptiluettelo, nimi="resepti-koti"),
polku ('resepti//', reseptin_tieto, nimi='reseptin_yksityiskohta'),
]

Yllä olevassa koodinpätkässä toinen polku lisää etanan sivun URL-osoitteeseen.

Luo malleja sovelluksellesi

Voit näyttää reseptit selaimessa luomalla malleja näkymillesi. Yksi malli tulisi olla varten reseptilista katsella, kun taas toisen pitäisi olla varten resepti_yksityiskohta näkymä. Jos haluat käyttää etanaa mallissasi, noudata tätä muotoa, {% url 'view_name' recipe.slug %}. Tässä on kaksi esimerkkiä, joita voit käyttää koodissasi:

 receptit/reseptilista.html 
{% extends 'base.html' %}

{% block content %}
<h1luokkaa="my-5 text-center">Reseptith1>
<keskusta>
<ulluokkaa="list-group w-75">
{% resepteille resepteissä %}
<liluokkaa="list-group-item my-3">
<h2luokkaa="mb-3">
<ahref="{% url 'reseptin_detail' resepti.slug %}">
{{ resepti.nimi }}
a>
h2>
<sluokkaa="w-50">
Ainesosat: {{ resepti.ainesosat }}
s>
<sluokkaa="teksti mykistetty">
Luotu: {{ recipe.date_created }}
s>
li>
{% tyhjä %}
<liluokkaa="luettelo-ryhmä-kohde">Reseptejä ei löytynyt.li>
{% endfor %}
ul>
keskusta>
{% endblock %}

Yllä oleva HTML-malli listaa kaikki tietokannassasi olevat reseptit ja näyttää Reseptejä ei löytynyt jos ei ole reseptejä. Se käyttää tyyliin Bootstrap-luokkia. Voit oppia kuinka käytä Bootstrapia Djangon kanssa. Yllä olevan mallin pitäisi näyttää selaimessa tältä:

 recipes/recipe_detail.html 
{% extends 'base.html' %}

{% block content %}
<keskusta>
<divluokkaa="w-75">
<h1luokkaa="mt-5 mb-4">{{ resepti.nimi }}h1>
<h3>Ainesosath3>
<s>{{ resepti.ainesosat }}s>
<h3>Ohjeeth3>
<s>{{ resepti.ohjeet }}s>
<sluokkaa="teksti mykistetty">Luotu: {{ recipe.date_created }}s>
div>
keskusta>
{% endblock %}

Yllä oleva HTML-malli palauttaa tiedot tietystä reseptistä. Selaimessa yllä olevan sivun pitäisi näyttää tältä:

Huomaat, että URL-osoite sisältää nyt minkä tahansa etanan, jonka olet lisännyt tietokantaan jokaiselle reseptille. Jos et ymmärrä mallijärjestelmän toimintaa, sinun on ensin opittava mallin perintö Djangossa ja Djangon MVT-arkkitehtuuri.

Luo etana automaattisesti Djangossa

Etanoiden kanssa todella haluat luoda ne automaattisesti mallisi kentän perusteella. Tätä varten sinun on muutettava Tallentaa() menetelmä mallissasi ja määritä omat säännöt ennen kuin objektit tallennetaan tietokantaan. Tässä on yksinkertainen esimerkki, jonka voit lisätä malliluokkaasi:

# tuonti slugify
alkaen django.template.defaultfilters tuonti hidastaa

defTallentaa(itse, *args, **kwargs):
josei self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Yllä oleva toiminto tarkistaa ensin, onko malliobjektille slug. Jos etanaa ei ole, se käyttää hidastaa funktion luomiseksi mallin nimikentästä. Ohituksen jälkeen Tallentaa() menetelmä, avaa hallintapaneeli ja lisää reseptejä. Tällä kertaa sinun ei tarvitse täyttää etanakenttää, koska se täytetään automaattisesti, kun tallennat reseptin.

Jos siirryt äskettäin lisätyn reseptisi tietosivulle, näet, että URL-osoite käyttää reseptin nimeä etana.

Joskus sinulla on useita reseptejä samalla nimellä, ja se aiheuttaa virheitä etanassasi. Voit korjata tämän lisäämällä etanaasi ainutlaatuisen elementin, kuten luontipäivämäärän. Tässä on yksinkertainen esimerkki:

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

Käytä etanoita URL-kokemuksen parantamiseen

Toisin kuin vanhat hyvät pk, etanat tarjoavat monia etuja, kuten joustavuuden ja siirrettävyyden, koska niitä ei ole sidottu tiettyihin URL-tunnisteisiin, kuten ensisijaiseen avaimeen. Siksi, jos muutat tietokantarakennetta tai siirrät tietosi, voit silti säilyttää johdonmukaiset URL-osoitteet. Etanat parantavat myös SEO-ystävällisyyttä.