Nemusíte sa obťažovať vytváraním slimákov v Django. Implementujte automatické generovanie slimákov, aby ste ušetrili čas a zefektívnili svoj pracovný tok.

Ako webový vývojár je optimalizácia používateľského dojmu vašej webovej aplikácie kľúčová. Ak chcete zlepšiť používateľskú skúsenosť a viditeľnosť vyhľadávacieho nástroja, použite používateľsky prívetivé adresy URL so slimákmi v Django. Vytváranie adries URL pomocou slugs je rovnako jednoduché ako písanie funkcie, čo vám umožňuje vytvárať stručné a popisné adresy URL, ktoré sú ľahko zrozumiteľné pre používateľov a vyhľadávacie nástroje. To zlepšuje použiteľnosť a dostupnosť a zároveň zvyšuje hodnotenie vyhľadávačov.

Príklady kódu použité v tomto článku nájdete v tomto úložisko GitHub.

Vytvorenie projektu Django

Django poskytuje niekoľko metód na generovanie slimákov a ich použitie na vašej webovej stránke. Na ilustráciu rôznych spôsobov implementácie slimákov vás tento tutoriál prevedie vytvorením jednoduchej webovej aplikácie pre blog.

instagram viewer

Pred nastavením projektu Django vytvoriť a aktivovať virtuálne prostredie na inštaláciu potrebných závislostí. Po aktivácii vášho virtuálneho prostredia nastavte svoj projekt podľa týchto krokov:

  • Nainštalujte Django pomocou príkazu pip v príkazovom riadku:
pip nainštalovať django
  • Vytvorte projekt pomocou django-admin užitočnosť. Tento tutoriál použije project_core ako názov projektu.
django-admin startproject project_core .
  • Vytvorte aplikáciu s názvom recepty.
recepty python manage.py startapp
  • Pridajte svoju aplikáciu do nainštalovaných aplikácií vo vašom projekte nastavenie.py súbor.
INSTALLED_APPS = [
'...'
'recepty',
]
  • Spustite svoju aplikáciu zadaním nasledujúceho príkazu do nástroja príkazového riadka:
runserver python manage.py
  • Prejdite na http://127.0.0.1:8000/ vo vašom prehliadači. Mali by ste vidieť túto stránku:
  • Nakonfigurujte vzor adresy URL vo svojom projekte urls.py súbor
od django.urls importovať cesta, zahŕňajú

urlpatterns = [
'...',
cesta ('', zahŕňať('recipes.urls'))
]

Vytvorenie slimáka v Django

Ak chcete vygenerovať slimáka v Django, musíte do svojich modelov zahrnúť pole slimákov. Podľa týchto krokov vytvorte slimáka v Django.

Vytvorte model

V tvojom modely.py súbor, vytvorte nový model a pridajte pole slimákov. Tu je príklad:

triedaRecept(modely. Model):
meno = modely. CharField (max_length=225, prázdne =Nepravdivé, null=Nepravdivé)
ingrediencie = modely. TextField (prázdne=Nepravdivé, null=Nepravdivé)
návod = modely. TextField (prázdne=Nepravdivé, null=Nepravdivé)
date_created = modely. DateTimeField (auto_now=Pravda)
slimák = modely. SlugField (null = Pravda, prázdne =Pravda, jedinečný=Pravda)

Vo vyššie uvedenom príklade model Recept obsahuje pole s názvom slimák. The slimák pole má atribúty, nulový a prázdna nastavený na Pravda.

Aplikujte migrácie na svoj model

Po vytvorení modelu by ste mali spustiť nasledujúci príkaz v nástroji príkazového riadka na vytvorenie tabuľky v databáze:

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

Vyššie uvedený príkaz najskôr vygeneruje súbor migrácie a potom aktualizuje databázu vykonaním pokynov v súbore migrácie.

Pridajte údaje do svojej databázy

Zaregistrujte svoj model zadaním nasledujúceho admin.py súbor:

od django.contrib importovať admin
od .modelky importovať Recept

admin.site.register (recept)

Potom otvorte nástroj príkazového riadka a vytvorte a superužívateľ pre váš panel správcu spustením tohto príkazu:

python manage.py vytvára superužívateľa

Vyššie uvedený príkaz vás prevedie krokmi zobrazenými na tomto obrázku:

Po vytvorení a superužívateľ, spustite lokálny server s nasledujúcim príkazom:

runserver python manage.py

Po spustení servera by ste mali prejsť na http://127.0.0.1:8000/admin/, prihláste sa s údajmi, ktoré ste použili na vytvorenie a superužívateľa ručne pridajte nejaké recepty do svojej databázy. Mali by ste venovať pozornosť poli slimákov.

Vytvorte zobrazenia pre svoju aplikáciu

Otvor tvoj views.py súbor a vytvorte pre svoju aplikáciu dve zobrazenia. Prvé zobrazenie jednoducho zobrazí prehľad vašich receptov, zatiaľ čo druhé zobrazenie poskytne viac podrobností o každom recepte. Vo svojom projekte môžete použiť tieto zobrazenia:

od django.skratky importovať render, get_object_or_404
od .modelky importovať Recept

# Zobrazenie zoznamu receptov
defrecept_list(žiadosť):
recepty = Recipe.objects.all()
vrátiť vykresliť (žiadosť, 'recipes/recipe_list.html', {"recepty":recepty})

# Detailné zobrazenie každého receptu
defrecept_detail(žiadosť, recept_slug):
recept = get_object_or_404(recept, slimák=recipe_slug)
vrátiť vykresliť (žiadosť, 'recipes/recipe_detail.html', {'recept': recept})

Vo vyššie uvedenom útržku kódu je recept_list view vráti zoznam všetkých receptov do šablóny. Na druhej strane, recept_detail view vráti jeden recept do šablóny. Toto zobrazenie obsahuje ďalší parameter s názvom recept_slug ktorý sa používa na získanie slimáka pre konkrétny recept.

Nakonfigurujte vzory adries URL pre svoje zobrazenia

V adresári aplikácie (alebo recept priečinok), vytvorte súbor s názvom urls.py na pridanie ciest URL pre vašu aplikáciu. Tu je príklad:

od django.urls importovať cesta
od .názory importovať recept_zoznam, recept_detail

urlpatterns = [
cesta ('', zoznam_receptov, meno="recipe-home"),
cesta ('recept//', recept_detail, meno='recipe_detail'),
]

Vo vyššie uvedenom útržku kódu druhá cesta zavádza slimák do adresy URL stránky.

Vytvorte si šablóny pre svoju aplikáciu

Ak chcete zobraziť recepty v prehliadači, vytvorte šablóny pre svoje zobrazenia. Jedna šablóna by mala byť pre recept_list pohľad, zatiaľ čo druhý by mal byť pre recept_detail vyhliadka. Ak chcete použiť slimák vo svojej šablóne, postupujte podľa tohto formátu, {% url 'view_name' recept.slug %}. Tu sú dva príklady, ktoré môžete použiť vo svojom kóde:

 recepty/zoznam_receptov.html 
{% extends 'base.html' %}

{% block content %}
<h1trieda="my-5 text-center">Receptyh1>
<centrum>
<ultrieda="zoznam-skupina w-75">
{% pre recept v receptoch %}
<litrieda="zoznam-skupina-položka moja-3">
<h2trieda="mb-3">
<ahref="{% url 'recipe_detail' recept.slug %}">
{{recept.názov }}
a>
h2>
<ptrieda="w-50">
Ingrediencie: {{ recept.ingrediencie }}
p>
<ptrieda="text s vypnutým zvukom">
Vytvorené: {{ recipe.date_created }}
p>
li>
{% prázdne %}
<litrieda="zoznam-skupina-položka">Nenašli sa žiadne recepty.li>
{% endfor %}
ul>
centrum>
{% koncový blok %}

Vyššie uvedená HTML šablóna zobrazí zoznam všetkých receptov vo vašej databáze a zobrazí sa Nenašli sa žiadne recepty ak neexistujú žiadne recepty. Na styling používa triedy Bootstrap. Môžete sa naučiť, ako na to použite Bootstrap s Django. Vyššie uvedená šablóna by mala v prehliadači vyzerať takto:

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

{% block content %}
<centrum>
<divtrieda="w-75">
<h1trieda="mt-5 mb-4">{{recept.názov }}h1>
<h3>Ingrediencieh3>
<p>{{ recept. prísady }}p>
<h3>Inštrukcieh3>
<p>{{ recept.návod }}p>
<ptrieda="text s vypnutým zvukom">Vytvorené: {{ recipe.date_created }}p>
div>
centrum>
{% koncový blok %}

Šablóna HTML uvedená vyššie vráti podrobnosti o konkrétnom recepte. V prehliadači by vyššie uvedená stránka mala vyzerať takto:

Všimnete si, že adresa URL teraz obsahuje akýkoľvek slimák, ktorý ste pridali do databázy pre každý recept. Ak nerozumiete, ako systém šablón funguje, mali by ste sa to najskôr naučiť vzorové dedičstvo v Django a Architektúra MVT od Djanga.

Automaticky vygenerujte slimáka v Django

Pri slimákoch skutočne chcete, aby ste ich automaticky generovali na základe poľa vo vašom modeli. Ak to chcete urobiť, musíte upraviť uložiť () vo svojom modeli a špecifikujte svoje vlastné pravidlá pred uložením objektov do databázy. Tu je jednoduchý príklad, ktorý môžete pridať do svojej modelovej triedy:

# import slugify
od django.template.defaultfilters importovať slugovať

defuložiť(self, *args, **kwargs):
aknie self.slimák:
self.slug = slugify (vlastné meno)
super().save(*args, **kwargs)

Vyššie uvedená funkcia najprv skontroluje, či pre objekt modelu existuje slimák. Ak nie je žiadny slimák, použije sa slugovať funkciu na vygenerovanie jedného z poľa názvu v modeli. Po prepísaní uložiť () otvorte panel správcu a pridajte nejaké recepty. Tentoraz nemusíte vypĺňať pole slimák, pretože sa automaticky vyplní po uložení receptu.

Ak prejdete na stránku podrobností svojho novo pridaného receptu, uvidíte, že adresa URL používa názov receptu ako slimák.

Niekedy budete mať viacero receptov s rovnakým názvom a to spôsobí chyby vo vašom slimáku. Môžete to opraviť pridaním jedinečného prvku do slimáka, ako je napríklad dátum vytvorenia. Tu je jednoduchý príklad:

self.slug = slugify (vlastné meno + "-" + str (self.date_created))

Použite Slugs na zlepšenie skúseností s URL

Na rozdiel od starého dobrého pk, slimáky poskytujú mnoho výhod vrátane flexibility a prenosnosti, pretože nie sú viazané na konkrétne identifikátory URL, ako je primárny kľúč. Preto, ak zmeníte štruktúru databázy alebo migrujete svoje údaje, stále môžete udržiavať konzistentné adresy URL. Slimáky tiež zlepšujú SEO prívetivosť.