Jums nav jāpūlas, lai izveidotu lodes Django. Ieviesiet automātisku ložu ģenerēšanu, lai ietaupītu laiku un racionalizētu darbplūsmu.

Kā tīmekļa izstrādātājam jūsu tīmekļa lietotnes lietotāja pieredzes optimizēšana ir ļoti svarīga. Lai uzlabotu lietotāja pieredzi un meklētājprogrammu redzamību, pakalpojumā Django izmantojiet lietotājam draudzīgus vietrāžus URL ar sliedēm. Vietrāžu URL izveide ar sliņķiem ir tikpat vienkārša kā funkcijas rakstīšana, ļaujot ģenerēt kodolīgus un aprakstošus URL, kas ir viegli saprotami lietotājiem un meklētājprogrammām. Tas uzlabo lietojamību un pieejamību, vienlaikus uzlabojot meklētājprogrammu klasifikāciju.

Šajā rakstā izmantotie kodu piemēri ir atrodami šajā GitHub repozitorijs.

Django projekta izveide

Django piedāvā vairākas metodes gliemežu ģenerēšanai un izmantošanai jūsu vietnē. Lai ilustrētu dažādus gliemežu ieviešanas veidus, šī apmācība palīdzēs jums izveidot vienkāršu emuāra tīmekļa lietojumprogrammu.

Pirms Django projekta izveides, izveidot un aktivizēt virtuālo vidi

lai instalētu nepieciešamās atkarības. Pēc virtuālās vides aktivizēšanas veiciet šīs darbības, lai iestatītu projektu:

  • Instalējiet Django, izmantojot komandu pip savā komandrindā:
pip instalēt django
  • Izveidojiet projektu, izmantojot django-admin lietderība. Šī apmācība tiks izmantota projekta_kodola kā projekta nosaukums.
django-admin startproject project_core .
  • Izveidojiet lietotni ar nosaukumu receptes.
python manage.py startapp receptes
  • Pievienojiet savu lietotni sava projekta instalētajām lietotnēm settings.py failu.
INSTALLED_APPS = [
'...'
'receptes',
]
  • Palaidiet lietojumprogrammu, komandrindas rīkā ierakstot šādu komandu:
python manage.py runserver
  • Dodieties uz http://127.0.0.1:8000/ savā pārlūkprogrammā. Jums vajadzētu redzēt šo lapu:
  • Konfigurējiet URL modeli savā projektā urls.py failu
no django.urls imports ceļš, ietver

urlpatterns = [
'...',
ceļš ('', ietver('receptes.urls'))
]

Gliemeža izveide programmā Django

Lai Django ģenerētu plēksni, savos modeļos ir jāiekļauj lodes lauks. Veiciet šīs darbības, lai pakalpojumā Django izveidotu ložu.

Izveidojiet modeli

Tavā modeļi.py failu, izveidojiet jaunu modeli un iekļaujiet lodes lauku. Šeit ir piemērs:

klasēRecepte(modeļi. Modelis):
nosaukums = modeļi. CharField (max_length=225, tukšs =Nepatiesi, null=Nepatiesi)
sastāvdaļas = modeļi. Teksta lauks (tukšs =Nepatiesi, null=Nepatiesi)
instrukcijas = modeļi. Teksta lauks (tukšs =Nepatiesi, null=Nepatiesi)
date_created = modeļi. DateTimeField (auto_now=Taisnība)
gliemežnīca = modeļi. SlugField (null = Taisnība, tukšs =Taisnība, unikāls=Taisnība)

Iepriekš minētajā piemērā modelis Recepte satur lauku ar nosaukumu gliemeža. The gliemeža laukam ir atribūti, null un tukšs iestatīts uz Taisnība.

Lietojiet migrācijas savam modelim

Pēc modeļa izveides komandrindas rīkā palaidiet šādu komandu, lai izveidotu tabulu savā datu bāzē:

python manage.py makemigrations && python manage.py migrēt

Iepriekš minētā komanda vispirms ģenerēs migrācijas failu un pēc tam atjauninās datu bāzi, izpildot instrukcijas migrācijas failā.

Pievienojiet datus savai datu bāzei

Reģistrējiet savu modeli, savā laukā ierakstot tālāk norādīto admin.py fails:

no django.contrib imports admin
no .modeļi imports Recepte

admin.site.register (recepte)

Pēc tam atveriet komandrindas rīku un izveidojiet a superlietotājs savam administratora panelim, izpildot šo komandu:

python manage.py createsuperuser

Iepriekš minētā komanda palīdzēs jums veikt šajā attēlā redzamās darbības:

Pēc a superlietotājs, startējiet vietējo serveri ar šādu komandu:

python manage.py runserver

Kad serveris startē, jums vajadzētu doties uz http://127.0.0.1:8000/admin/, piesakieties ar informāciju, ko izmantojāt, lai izveidotu a superlietotājsun manuāli pievienojiet dažas receptes savai datubāzei. Jums vajadzētu pievērst uzmanību gliemežu laukam.

Izveidojiet skatus savai lietotnei

Atver savu views.py failu un izveidojiet divus skatus savai lietotnei. Pirmajā skatā vienkārši tiks parādīts jūsu recepšu pārskats, savukārt otrajā skatā tiks sniegta sīkāka informācija par katru recepti. Savā projektā varat izmantot šos skatus:

no django.shortcuts imports render, get_object_or_404
no .modeļi imports Recepte

# Recepšu saraksta skats
defrecepšu_saraksts(pieprasījums):
receptes = Recipe.objects.all()
atgriezties renderēt (pieprasīt, "receptes/recepšu_saraksts.html", {"receptes":receptes})

# Katras receptes detalizēts skats
defreceptes_detaļa(pieprasījums, recepte_slug):
recepte = get_object_or_404(recepte, slug=recipe_slug)
atgriezties renderēt (pieprasīt, 'receptes/receptes_detail.html', {'recepte': recepte})

Iepriekš minētajā koda fragmentā recepšu_saraksts skats atgriež visu recepšu sarakstu veidnē. No otras puses, receptes_detaļa skats veidnei atgriež vienu recepti. Šis skats uzņem papildu parametru, ko sauc recepte_slug kas tiek izmantots, lai iegūtu sliņķi konkrētai receptei.

Konfigurējiet URL modeļus saviem skatiem

Lietotņu direktorijā (vai recepte mape), izveidojiet failu ar nosaukumu urls.py lai savai lietotnei pievienotu URL ceļus. Šeit ir piemērs:

no django.urls imports ceļš
no .skatījumi imports recepšu_saraksts, receptes_detaļa

urlpatterns = [
ceļš ('', recepšu_saraksts, nosaukums='recepte-mājas'),
ceļš ('recepte//', receptes_detaļa, nosaukums='receptes_detaļa'),
]

Iepriekš minētajā koda fragmentā otrais ceļš ievada sliņķi lapas vietrādī URL.

Izveidojiet veidnes savai lietotnei

Lai parādītu receptes pārlūkprogrammā, izveidojiet skatu veidnes. Vienai veidnei jābūt paredzētai recepšu_saraksts skats, bet otram vajadzētu būt par receptes_detaļa skats. Lai savā veidnē izmantotu lodziņu, ievērojiet šo formātu, {% url 'view_name' recepte.slug %}. Šeit ir divi piemēri, ko varat izmantot savā kodā.

 receptes/recepšu_saraksts.html 
{% paplašina 'base.html' %}

{% bloķēt saturu %}
<h1klasē="mans-5 teksta centrs">Receptesh1>
<centrs>
<ulklasē="list-group w-75">
{% receptei receptēs %}
<liklasē="list-group-item my-3">
<h2klasē="mb-3">
<ahref="{% url 'receptes_detail' recepte.slug %}">
{{ recepte.nosaukums }}
a>
h2>
<lppklasē="w-50">
Sastāvdaļas: {{ recepte.sastāvdaļas }}
lpp>
<lppklasē="teksta izslēgta">
Izveidots: {{ recepte.date_created }}
lpp>
li>
{% tukšs %}
<liklasē="saraksta grupas vienums">Netika atrasta neviena recepte.li>
{% endfor %}
ul>
centrs>
{% endblock %}

Iepriekš minētajā HTML veidnē tiks uzskaitītas visas jūsu datubāzē esošās receptes un parādītas tās Netika atrasta neviena recepte ja nav receptes. Veidošanai tiek izmantotas Bootstrap klases. Jūs varat uzzināt, kā izmantojiet Bootstrap ar Django. Iepriekš minētajai veidnei pārlūkprogrammā vajadzētu izskatīties šādi:

 receptes/recipe_detail.html 
{% paplašina 'base.html' %}

{% bloķēt saturu %}
<centrs>
<divklasē="w-75">
<h1klasē="mt-5 mb-4">{{ recepte.nosaukums }}h1>
<h3>Sastāvdaļash3>
<lpp>{{ recepte.sastāvdaļas }}lpp>
<h3>Instrukcijash3>
<lpp>{{ recepte.instrukcijas }}lpp>
<lppklasē="teksta izslēgta">Izveidots: {{ recepte.date_created }}lpp>
div>
centrs>
{% endblock %}

Iepriekš esošā HTML veidne atgriež detalizētu informāciju par konkrētu recepti. Pārlūkā iepriekšminētajai lapai vajadzētu izskatīties šādi:

Jūs pamanīsit, ka vietrādī URL tagad ir ietverts viss, ko esat pievienojis savā datubāzē katrai receptei. Ja nesaprotat, kā darbojas veidņu sistēma, vispirms jums vajadzētu uzzināt veidnes mantošana Django un Django MVT arhitektūra.

Automātiski ģenerējiet plēksni programmā Django

Izmantojot gliemežus, jūs patiešām vēlaties tos automātiski ģenerēt, pamatojoties uz jūsu modeļa lauku. Lai to izdarītu, jums ir jāmaina saglabāt () metodi savā modelī un norādiet savus noteikumus, pirms objekti tiek saglabāti datu bāzē. Šeit ir vienkāršs piemērs, ko varat pievienot savai modeļu klasei:

# importēt slugify
no django.template.defaultfilters imports slinkot

defsaglabāt(pats, *args, **kwargs):
ja self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Iepriekš minētā funkcija vispirms pārbauda, ​​vai modeļa objektam nepastāv sliede. Ja nav gliemežu, tas izmanto slinkot funkciju, lai to ģenerētu no modeļa nosaukuma lauka. Pēc ignorēšanas saglabāt () metodi, atveriet savu administratora paneli un pievienojiet dažas receptes. Šoreiz jums nav jāaizpilda gliemežu lauks, jo tas tiks automātiski aizpildīts, tiklīdz saglabāsiet savu recepti.

Pārejot uz tikko pievienotās receptes detalizētās informācijas lapu, redzēsit, ka vietrādī URL tiek izmantots receptes nosaukums.

Dažreiz jums būs vairākas receptes ar vienu un to pašu nosaukumu, un tas radīs kļūdas jūsu gliemežnīcā. Varat to novērst, pievienojot savai sliedei unikālu elementu, piemēram, izveidošanas datumu. Šeit ir vienkāršs piemērs:

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

Izmantojiet Slugs, lai uzlabotu URL pieredzi

Atšķirībā no vecā labā pk, lodes nodrošina daudzas priekšrocības, tostarp elastību un pārnesamību, jo tās nav saistītas ar konkrētiem URL identifikatoriem, piemēram, primāro atslēgu. Tāpēc, ja maināt datu bāzes struktūru vai migrējat datus, joprojām varat uzturēt konsekventus URL. Gliemeži arī uzlabo SEO draudzīgumu.