Za ustvarjanje polžev v Djangu se vam ni treba truditi. Izvedite samodejno ustvarjanje polžev, da prihranite čas in poenostavite svoj potek dela.

Kot spletni razvijalec je optimizacija uporabniške izkušnje vaše spletne aplikacije ključnega pomena. Če želite izboljšati uporabniško izkušnjo in vidnost iskalnikov, uporabite uporabniku prijazne URL-je s polži v Djangu. Ustvarjanje URL-jev s polži je tako preprosto kot pisanje funkcije, kar vam omogoča ustvarjanje jedrnatih in opisnih URL-jev, ki jih uporabniki in iskalniki zlahka razumejo. To izboljša uporabnost in dostopnost ter hkrati izboljša uvrstitev v iskalnikih.

Primere kode, uporabljene v tem članku, najdete tukaj Repozitorij GitHub.

Ustvarjanje projekta Django

Django ponuja več metod za generiranje polžev in njihovo uporabo na vašem spletnem mestu. Za ponazoritev različnih načinov implementacije polžev vas bo ta vadnica vodila skozi izdelavo preproste spletne aplikacije za blog.

Preden nastavite projekt Django, ustvariti in aktivirati virtualno okolje

instagram viewer
za namestitev potrebnih odvisnosti. Ko aktivirate virtualno okolje, sledite tem korakom za nastavitev projekta:

  • Namestite Django z ukazom pip v ukazni vrstici:
pip namestite django
  • Ustvarite projekt z uporabo django-admin uporabnost. Ta vadnica bo uporabila project_core kot ime projekta.
django-admin startproject project_core.
  • Ustvarite aplikacijo z imenom recepti.
python manage.py startapp recepti
  • Dodajte svojo aplikacijo nameščenim aplikacijam v vašem projektu nastavitev.py mapa.
INSTALLED_APPS = [
'...'
'recepti',
]
  • Zaženite aplikacijo tako, da v orodje ukazne vrstice vnesete naslednji ukaz:
python manage.py runserver
  • Pojdite na http://127.0.0.1:8000/ v vašem brskalniku. Morali bi videti to stran:
  • Konfigurirajte vzorec URL v svojem projektu urls.py mapa
od django.urls uvoz pot, vključite

urlvzorci = [
'...',
pot('', vključi('recepti.urls'))
]

Ustvarjanje polža v Djangu

Če želite ustvariti polža v Djangu, morate v svoje modele vključiti polje polža. Sledite tem korakom, da ustvarite polža v Djangu.

Ustvarite model

V vašem models.py datoteko, ustvarite nov model in vključite polje polža. Tukaj je primer:

razredRecept(modeli. model):
ime = modeli. CharField (max_length=225, prazno=False, null=False)
sestavine = modelčki. TextField (prazno=False, null=False)
navodila = modeli. TextField (prazno=False, null=False)
date_created = modeli. DateTimeField (auto_now=Prav)
polž = modeli. SlugField (null = Prav, prazno=Prav, edinstveno=Prav)

V zgornjem primeru je model Recept vsebuje polje z imenom polž. The polž polje ima atribute, nič in prazno nastavljena Prav.

Uporabite migracije za svoj model

Ko ustvarite model, morate v orodju ukazne vrstice zagnati naslednji ukaz, da ustvarite tabelo v svoji bazi podatkov:

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

Zgornji ukaz bo najprej ustvaril selitveno datoteko in nato posodobil bazo podatkov z izvajanjem navodil znotraj selitvene datoteke.

Dodajte podatke v svojo zbirko podatkov

Registrirajte svoj model tako, da v svoje polje vnesete naslednje admin.py mapa:

od django.contrib uvoz admin
od .modeli uvoz Recept

admin.site.register (recept)

Nato odprite orodje ukazne vrstice in ustvarite superuporabnik za vašo skrbniško ploščo, tako da zaženete ta ukaz:

python manage.py createsuperuser

Zgornji ukaz vas bo popeljal skozi korake, prikazane na tej sliki:

Po ustvarjanju a superuporabnik, zaženite lokalni strežnik z naslednjim ukazom:

python manage.py runserver

Ko se vaš strežnik zažene, se pomaknite do http://127.0.0.1:8000/admin/, se prijavite s podatki, ki ste jih uporabili za ustvarjanje a superuporabnikin ročno dodajte nekaj receptov v svojo zbirko podatkov. Pozorni morate biti na polje polžev.

Ustvarite poglede za svojo aplikacijo

Odpri svojo views.py datoteko in ustvarite dva pogleda za svojo aplikacijo. Prvi pogled bo preprosto prikazal pregled vaših receptov, medtem ko bo drugi prikazal več podrobnosti o vsakem receptu. Te poglede lahko uporabite v svojem projektu:

od django.shortcuts uvoz render, get_object_or_404
od .modeli uvoz Recept

# Pogled seznama za recepte
defseznam_receptov(prošnja):
recepti = Recipe.objects.all()
vrnitev render (zahteva, 'recipes/seznam_receptov.html', {"recepti":recepti})

# Podroben pogled za vsak recept
defrecept_detail(zahteva, recipe_slug):
recipe = get_object_or_404(Recept, slug=recipe_slug)
vrnitev render (zahteva, 'recipes/recipe_detail.html', {'recept': recept})

V zgornjem delčku kode je seznam_receptov vrne seznam vseh receptov v predlogo. Po drugi strani pa je recept_detail pogled vrne en sam recept v predlogo. Ta pogled vključuje dodatni parameter, imenovan recipe_slug ki se uporablja za pridobivanje polža za določen recept.

Konfigurirajte vzorce URL-jev za svoje poglede

V vašem imeniku aplikacij (ali recept mapo), ustvarite datoteko z imenom urls.py da dodate poti URL za svojo aplikacijo. Tukaj je primer:

od django.urls uvoz pot
od .pogledi uvoz seznam_receptov, podrobnosti_recepta

urlvzorci = [
pot('', seznam_receptov, ime='recept-domov'),
pot('recept//', podrobnosti_recepta, ime='recipe_detail'),
]

V zgornjem delčku kode druga pot uvede polžek v URL strani.

Ustvarite predloge za svojo aplikacijo

Za prikaz receptov v brskalniku ustvarite predloge za svoje poglede. Ena predloga naj bo za seznam_receptov pogled, medtem ko bi drugi moral biti za recept_detail pogled. Če želite uporabiti polž v svoji predlogi, sledite tej obliki, {% url 'view_name' recipe.slug %}. Tukaj sta dva primera, ki ju lahko uporabite v svoji kodi:

 recepti/seznam_receptov.html 
{% razširi 'base.html' %}

{% blok vsebine %}
<h1razred="my-5 center za besedilo">Receptih1>
<center>
<ulrazred="seznam-skupina w-75">
{% za recept v receptih %}
<lirazred="list-group-item my-3">
<h2razred="mb-3">
<ahref="{% url 'recipe_detail' recipe.slug %}">
{{ recipe.name }}
a>
h2>
<strrazred="w-50">
Sestavine: {{ recipe.ingredients }}
str>
<strrazred="besedilo utišano">
Ustvarjeno: {{ recipe.date_created }}
str>
li>
{% prazno %}
<lirazred="element-skupine-seznama">Ni receptov.li>
{% endfor %}
ul>
center>
{% endblock %}

Zgornja predloga HTML bo navedla vse recepte v vaši zbirki podatkov in prikazala Ni receptov če ni receptov. Za oblikovanje uporablja razrede Bootstrap. Lahko se naučite, kako uporabite Bootstrap z Django. Zgornja predloga bi morala v brskalniku izgledati takole:

 recepti/podrobnosti_recepta.html 
{% razširi 'base.html' %}

{% blok vsebine %}
<center>
<divrazred="w-75">
<h1razred="mt-5 mb-4">{{ recipe.name }}h1>
<h3>Sestavineh3>
<str>{{ recept.sestavine }}str>
<h3>Navodilah3>
<str>{{ recept.navodila }}str>
<strrazred="besedilo utišano">Ustvarjeno: {{ recipe.date_created }}str>
div>
center>
{% endblock %}

Zgornja predloga HTML vrne podrobnosti o določenem receptu. V brskalniku bi morala zgornja stran izgledati takole:

Opazili boste, da URL zdaj vsebuje polže, ki ste jih dodali v svojo bazo podatkov za vsak recept. Če ne razumete, kako sistem predlog deluje, se morate najprej naučiti dedovanje predloge v Djangu in Djangova arhitektura MVT.

Samodejno ustvarite polža v Djangu

Pri polžih si resnično želite, da jih samodejno ustvarite na podlagi polja v vašem modelu. Če želite to narediti, morate spremeniti shrani() metodo v vašem modelu in določite lastna pravila, preden se objekti shranijo v bazo podatkov. Tukaj je preprost primer, ki ga lahko dodate svojemu razredu modela:

# import slugify
od django.template.defaultfilters uvoz uničiti

defshraniti(self, *args, **kwargs):
čene self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Zgornja funkcija najprej preveri, ali za objekt modela obstaja polž. Če ni polža, uporablja uničiti funkcijo za ustvarjanje enega iz polja imena v modelu. Po preglasitvi shrani() odprite skrbniško ploščo in dodajte nekaj receptov. Tokrat vam ni treba izpolniti polja za polže, ker bo samodejno izpolnjeno, ko shranite recept.

Če se pomaknete na stran s podrobnostmi na novo dodanega recepta, boste videli, da URL uporablja ime recepta kot polž.

Včasih boste imeli več receptov z istim imenom, kar bo povzročilo napake v vašem polžu. To lahko popravite tako, da polžu dodate edinstven element, kot je datum ustvarjenega. Tukaj je preprost primer:

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

Uporabite polže za izboljšanje izkušnje URL-jev

Za razliko od dobrih starih pak, polži zagotavljajo številne prednosti, vključno s prilagodljivostjo in prenosljivostjo, saj niso vezani na posebne identifikatorje URL-jev, kot je primarni ključ. Če torej spremenite strukturo zbirke podatkov ali preselite podatke, lahko še vedno ohranite dosledne URL-je. Polži tudi izboljšajo prijaznost do SEO.