Nem kell vesződnie a csigák létrehozásával a Django-ban. Az időmegtakarítás és a munkafolyamat egyszerűsítése érdekében hajtsa végre az automatikus csigagenerálást.

Webfejlesztőként kulcsfontosságú a webalkalmazás felhasználói élményének optimalizálása. A felhasználói élmény és a keresőmotorok láthatóságának javítása érdekében használjon felhasználóbarát URL-eket a Django-ban. URL-ek létrehozása slugokkal ugyanolyan egyszerű, mint egy függvény írása, amely lehetővé teszi tömör és leíró URL-ek létrehozását, amelyeket a felhasználók és a keresőmotorok könnyen megértenek. Ez javítja a használhatóságot és a hozzáférhetőséget, miközben javítja a keresőmotorok rangsorolását.

A cikkben használt kódpéldák ebben találhatók GitHub adattár.

Django projekt létrehozása

A Django számos módszert kínál a csigák generálására és a webhelyen való felhasználására. A csigák megvalósításának különböző módjainak szemléltetésére ez az oktatóanyag végigvezeti Önt egy egyszerű blog webalkalmazás felépítésén.

Mielőtt létrehozna egy Django projektet,

instagram viewer
virtuális környezet létrehozása és aktiválása a szükséges függőségek telepítéséhez. A virtuális környezet aktiválása után kövesse az alábbi lépéseket a projekt beállításához:

  • Telepítse a Django-t a pip paranccsal a parancssorban:
pip install django
  • Hozzon létre egy projektet a django-admin hasznosság. Ez az oktatóanyag használni fogja projekt_mag mint a projekt neve.
django-admin startproject project_core .
  • Hozzon létre egy nevű alkalmazást receptek.
python manage.py startapp receptek
  • Adja hozzá alkalmazását a projektben lévő telepített alkalmazásokhoz beállítás.py fájlt.
INSTALLED_APPS = [
'...'
"receptek",
]
  • Futtassa az alkalmazást a következő parancs beírásával a parancssori eszközbe:
python manage.py runserver
  • Navigáljon ide http://127.0.0.1:8000/ a böngészőjében. Ezt az oldalt látnod kell:
  • Konfigurálja az URL-mintát a projektben urls.py fájlt
tól től django.urls import út, tartalmazza

urlpatterns = [
'...',
pálya('', include("receptek.urls"))
]

Slug létrehozása a Django-ban

Ahhoz, hogy a Django-ban slug-ot generálhasson, bele kell foglalnia egy slug-mezőt a modellekbe. Kövesse ezeket a lépéseket, hogy létrehozzon egy csigát a Django-ban.

Hozzon létre egy modellt

A tiédben modellek.py fájlt, hozzon létre egy új modellt, és vegyen fel egy slug mezőt. Íme egy példa:

osztályRecept(modellek. Modell):
név = modellek. CharField (max_length=225, üres=Hamis, null=Hamis)
összetevők = modellek. Szövegmező (üres=Hamis, null=Hamis)
utasítások = modellek. Szövegmező (üres=Hamis, null=Hamis)
date_created = modellek. DateTimeField (auto_now=Igaz)
csiga = modellek. SlugField (null = Igaz, üres=Igaz, egyedi=Igaz)

A fenti példában a modell Recept nevű mezőt tartalmaz meztelen csiga. A meztelen csiga a mező rendelkezik az attribútumokkal, nulla és üres állítva Igaz.

Alkalmazzon áttéréseket a modelljére

A modell létrehozása után futtassa a következő parancsot a parancssori eszközben a táblázat létrehozásához az adatbázisban:

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

A fenti parancs először egy migrációs fájlt generál, majd frissíti az adatbázist az áttelepítési fájlban található utasítások végrehajtásával.

Adjon hozzá adatokat az adatbázisához

Regisztrálja modelljét a következő beírásával admin.py fájl:

tól től django.contrib import admin
tól től .modellek import Recept

admin.site.register (recept)

Ezután nyissa meg a parancssori eszközt, és hozzon létre a szuperfelhasználó az adminisztrációs panelhez a következő parancs futtatásával:

python manage.py createsuperuser

A fenti parancs végigvezeti a képen látható lépéseken:

Létrehozása után a szuperfelhasználó, indítsa el a helyi szervert a következő paranccsal:

python manage.py runserver

Miután a szerver elindult, navigáljon ide http://127.0.0.1:8000/admin/, jelentkezzen be a létrehozásához használt adatokkal a szuperfelhasználó, és manuálisan adjon hozzá néhány receptet az adatbázisához. Figyelni kell a meztelen csigák területére.

Nézetek létrehozása az alkalmazáshoz

Nyissa meg views.py fájlt, és hozzon létre két nézetet az alkalmazáshoz. Az első nézet egyszerűen a receptek áttekintését jeleníti meg, a második pedig további részleteket ad az egyes receptekről. Ezeket a nézeteket használhatja a projektben:

tól től django.parancsikonok import render, get_object_or_404
tól től .modellek import Recept

# Lista nézet a receptekhez
defrecept_lista(kérés):
receptek = Recept.objects.all()
Visszatérés render (kérés, "receptek/receptek_lista.html", {"receptek":receptek})

# Részletes nézet minden recepthez
defrecept_részlet(kérés, recept_slug):
recept = get_object_or_404(Recept, slug=recept_slug)
Visszatérés render (kérés, 'receptek/recept_detail.html', {'recept': recept})

A fenti kódrészletben a recept_lista nézet visszaadja az összes recept listáját a sablonhoz. Másrészt a recept_részlet nézet egyetlen receptet ad vissza a sablonhoz. Ez a nézet egy további paramétert vesz fel recept_slug amelyet egy adott recepthez a csigának beszerzésére használnak.

Állítson be URL-formátumokat a nézeteihez

Az alkalmazáskönyvtárban (vagy recept mappa), hozzon létre egy fájlt urls.py URL-útvonalak hozzáadásához az alkalmazáshoz. Íme egy példa:

tól től django.urls import pálya
tól től .nézetek import recept_lista, recept_részlet

urlpatterns = [
pálya('', recept_lista, név='recept-otthon'),
pálya('recept//', recept_részlete, név="recept_részlet"),
]

A fenti kódrészletben a második elérési út bevezeti a slug-ot az oldal URL-jébe.

Hozzon létre sablonokat az alkalmazásához

A receptek böngészőben való megjelenítéséhez hozzon létre sablonokat a nézeteihez. Egy sablon kell a recept_lista nézet, míg a másik legyen a recept_részlet Kilátás. A csigának a sablonban való használatához kövesse ezt a formátumot, {% url 'view_name' recept.slug %}. Íme két példa, amelyet a kódjában használhat:

 receptek/receptek_lista.html 
{% extends 'base.html' %}

{% blokktartalom %}
<h1osztály="my-5 text-center">Receptekh1>
<központ>
<ulosztály="lista-csoport w-75">
{% recepthez a receptekben %}
<liosztály="lista-csoport-elem én-3">
<h2osztály="mb-3">
<ahref="{% url 'recipe_detail' recept.slug %}">
{{ recept.név }}
a>
h2>
<posztály="w-50">
Hozzávalók: {{ recept.összetevők }}
p>
<posztály="szöveg elnémítva">
Létrehozva: {{ recept.date_created }}
p>
li>
{% üres %}
<liosztály="lista-csoport-elem">Nem található recept.li>
{% endfor %}
ul>
központ>
{% endblock %}

A fenti HTML-sablon felsorolja az adatbázisban lévő összes receptet, és megjelenik Nem található recept ha nincsenek receptek. A stílushoz Bootstrap osztályokat használ. Megtanulhatod, hogyan kell használja a Bootstrapet a Django-val. A fenti sablonnak így kell kinéznie a böngészőben:

 receptek/recept_detail.html 
{% extends 'base.html' %}

{% blokktartalom %}
<központ>
<divosztály="w-75">
<h1osztály="mt-5 mb-4">{{ recept.név }}h1>
<h3>Hozzávalókh3>
<p>{{ recept.összetevők }}p>
<h3>Utasításh3>
<p>{{ recept.utasítások }}p>
<posztály="szöveg elnémítva">Létrehozva: {{ recept.date_created }}p>
div>
központ>
{% endblock %}

A fenti HTML-sablon egy adott recept részleteit adja vissza. A böngészőben a fenti oldalnak így kell kinéznie:

Észre fogja venni, hogy az URL-cím most már tartalmazza mindazt a csigát, amelyet minden recepthez hozzáadott az adatbázisához. Ha nem érti a sablonrendszer működését, először meg kell tanulnia sablon öröklődése a Django-ban és A Django MVT architektúrája.

Automatikusan generáljon csigát a Django-ban

A meztelen csigák esetében valóban azt szeretné, ha automatikusan előállítaná őket a modell egy mezője alapján. Ehhez módosítani kell a megment() módszert a modellben, és adja meg saját szabályait, mielőtt az objektumokat az adatbázisba menti. Íme egy egyszerű példa, amelyet hozzáadhat a modellosztályához:

# import slugify
tól től django.template.defaultfilters import lomha

defmegment(én, *args, **kwargs):
hanem self.slug:
self.slug = slugify (self.name)
szuper().save(*args, **kwargs)

A fenti függvény először ellenőrzi, hogy létezik-e slug a modellobjektumhoz. Ha nincs csiga, akkor a lomha függvény segítségével generálhat egyet a modell névmezőjéből. Miután felülírta a megment() módszert, nyissa meg az adminisztrációs panelt, és adjon hozzá néhány receptet. Ezúttal nem kell kitöltenie a csiga mezőt, mert a recept mentése után automatikusan kitöltésre kerül.

Ha az újonnan hozzáadott recept részleteit tartalmazó oldalra lép, látni fogja, hogy az URL-cím a recept nevét használja csigaként.

Időnként több receptje is van ugyanazzal a névvel, és ez hibákat okoz a csigában. Ezt úgy javíthatja ki, hogy egyedi elemet ad hozzá a csigához, például a létrehozás dátumát. Íme egy egyszerű példa:

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

Használja a Slugs-t az URL-élmény fokozására

Ellentétben a régi jóval pk, a slug-ok számos előnnyel járnak, beleértve a rugalmasságot és a hordozhatóságot, mivel nincsenek meghatározott URL-azonosítókhoz, például az elsődleges kulcshoz kötve. Ezért ha módosítja az adatbázis szerkezetét vagy áttelepíti az adatokat, továbbra is fenntarthatja az egységes URL-címeket. A meztelen csigák a SEO-barátságot is fokozzák.