Не морате да мучите да креирате пужеве у Дјангу. Примените аутоматско генерисање пужева да бисте уштедели време и поједноставили свој радни ток.

Као веб програмер, оптимизација корисничког искуства ваше веб апликације је кључна. Да бисте побољшали корисничко искуство и видљивост претраживача, користите УРЛ-ове прилагођене кориснику са пужевима у Дјангу. Прављење УРЛ-ова са пужевима је једноставно као писање функције, омогућавајући вам да генеришете сажете и описне УРЛ-ове које је лако разумети корисницима и претраживачима. Ово побољшава употребљивост и приступачност, истовремено повећавајући рангирање на претраживачима.

Примери кода који се користе у овом чланку могу се наћи у овоме ГитХуб спремиште.

Креирање Дјанго пројекта

Дјанго нуди неколико метода за генерисање пужева и њихово коришћење на вашој веб локацији. Да бисмо илустровали различите начине имплементације пужева, овај водич ће вас провести кроз изградњу једноставне веб апликације за блог.

Пре подешавања Дјанго пројекта, креирати и активирати виртуелно окружење

instagram viewer
да инсталирате потребне зависности. Након што активирате виртуелно окружење, пратите ове кораке да бисте подесили пројекат:

  • Инсталирајте Дјанго користећи команду пип у командној линији:
пип инсталл дјанго
  • Креирајте пројекат користећи дјанго-админ корисност. Овај водич ће користити пројецт_цоре као назив пројекта.
дјанго-админ стартпројецт пројецт_цоре .
  • Направите апликацију под називом Рецепти.
питхон манаге.пи стартапп рецепти
  • Додајте своју апликацију инсталираним апликацијама у свом пројекту сеттинг.пи фајл.
ИНСТАЛЛЕД_АППС = [
'...'
'Рецепти',
]
  • Покрените своју апликацију тако што ћете унети следећу команду у алатку командне линије:
питхон манаге.пи рунсервер
  • Иди на http://127.0.0.1:8000/ у вашем претраживачу. Требало би да видите ову страницу:
  • Конфигуришите УРЛ образац у свом пројекту урлс.пи фајл
из дјанго.урлс увоз пут, укључити

урлпаттернс = [
'...',
пут('', укључују ('реципес.урлс'))
]

Креирање пужа у Дјангу

Да бисте генерисали пуж у Дјангу, морате да укључите поље за пуж у своје моделе. Пратите ове кораке да бисте направили пуж у Дјангу.

Креирајте модел

У вашем модели.пи датотеку, креирајте нови модел и укључите поље пужева. Ево примера:

класаРецепт(модели. модел):
назив = модели. ЦхарФиелд (мак_ленгтх=225, празно=Фалсе, нулл=Фалсе)
састојци = модели. Поље за текст (празно=Фалсе, нулл=Фалсе)
упутства = модели. Поље за текст (празно=Фалсе, нулл=Фалсе)
дате_цреатед = модели. ДатеТимеФиелд (ауто_нов=Истина)
пуж = модели. СлугФиелд (нулл = Истина, празно=Истина, јединствено=Истина)

У горњем примеру, модел Рецепт садржи поље под називом пуж. Тхе пуж поље има атрибуте, нула и празно подешен на Истина.

Примените миграције на свој модел

Након креирања модела, требало би да покренете следећу команду у алату командне линије да бисте креирали табелу у вашој бази података:

питхон манаге.пи макемигратионс && питхон манаге.пи мигрира

Горња команда ће прво генерисати датотеку за миграцију, а затим ажурирати базу података извршавањем инструкција унутар датотеке за миграцију.

Додајте податке у своју базу података

Региструјте свој модел тако што ћете уписати следеће у свој админ.пи фајл:

из дјанго.цонтриб увоз админ
из .модели увоз Рецепт

админ.сите.регистер (рецепт)

Затим отворите алатку командне линије и креирајте а суперкорисник за ваш административни панел тако што ћете покренути ову команду:

питхон манаге.пи цреатесуперусер

Горња команда ће вас провести кроз кораке приказане на овој слици:

Након креирања а суперкорисник, покрените свој локални сервер са следећом командом:

питхон манаге.пи рунсервер

Када се ваш сервер покрене, требало би да идете на http://127.0.0.1:8000/admin/, пријавите се са детаљима које сте користили за креирање а суперкорисник, и ручно додајте неке рецепте у своју базу података. Треба обратити пажњу на поље пужа.

Креирајте приказе за своју апликацију

Отвори свој виевс.пи датотеку и креирајте два приказа за своју апликацију. Први приказ ће једноставно приказати преглед ваших рецепата, док ће други дати више детаља о сваком рецепту. Можете користити ове погледе у свом пројекту:

из дјанго.схортцутс увоз рендер, гет_објецт_ор_404
из .модели увоз Рецепт

# Приказ листе за рецепте
дефреципе_лист(захтев):
рецепти = Реципе.објецтс.алл()
повратак изнети (захтев, 'реципес/реципе_лист.хтмл', {"Рецепти":Рецепти})

# Детаљни приказ за сваки рецепт
дефреципе_детаил(захтев, реципе_слуг):
рецепт = гет_објецт_ор_404(Рецепт, слуг=реципе_слуг)
повратак изнети (захтев, 'реципес/реципе_детаил.хтмл', {'рецепт': рецепт})

У горњем исечку кода, реципе_лист виев враћа листу свих рецепата у шаблон. С друге стране, реципе_детаил виев враћа један рецепт у шаблон. Овај приказ узима додатни параметар који се зове реципе_слуг који се користи за добијање пужа за одређени рецепт.

Конфигуришите УРЛ обрасце за своје приказе

У директоријуму апликације (или рецепт фолдер), креирајте датотеку под називом урлс.пи да бисте додали УРЛ путање за своју апликацију. Ево примера:

из дјанго.урлс увоз пут
из .виевс увоз рецепт_лист, реципе_детаил

урлпаттернс = [
пут('', листа_рецепта, име='рецепт-хоме'),
пут('рецепт//', реципе_детаил, наме='реципе_детаил'),
]

У горњем исечку кода, друга путања уводи пуж у УРЛ за страницу.

Креирајте шаблоне за своју апликацију

Да бисте приказали рецепте у прегледачу, направите шаблоне за своје приказе. Један шаблон би требало да буде за реципе_лист поглед док други треба да буде за реципе_детаил поглед. Да бисте користили пуж у свом шаблону, пратите овај формат, {% урл 'виев_наме' реципе.слуг %}. Ево два примера која можете да користите у свом коду:

 реципес/реципе_лист.хтмл 
{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<х1класа="ми-5 тект-центер">Рецептих1>
<центар>
<улкласа="лист-гроуп в-75">
{% за рецепт у рецептима %}
<ликласа="лист-гроуп-итем ми-3">
<х2класа="мб-3">
<ахреф="{% урл 'реципе_детаил' реципе.слуг %}">
{{ реципе.наме }}
а>
х2>
<стркласа="в-50">
Састојци: {{ рецепт.састојци }}
стр>
<стркласа=„текст је искључен“>
Направљено: {{ реципе.дате_цреатед }}
стр>
ли>
{% празно %}
<ликласа="лист-група-ставка">Није пронађен ниједан рецепт.ли>
{% ендфор %}
ул>
центар>
{% ендблоцк %}

Горњи ХТМЛ шаблон ће навести све рецепте у вашој бази података и приказати Није пронађен ниједан рецепт ако нема рецепата. Користи Боотстрап класе за стилизовање. Можете научити како да користите Боотстрап са Дјангом. Горњи шаблон би требало да изгледа овако у претраживачу:

 реципес/реципе_детаил.хтмл 
{% проширује 'басе.хтмл' %}

{% блок садржаја %}
<центар>
<дивкласа="в-75">
<х1класа="мт-5 мб-4">{{ реципе.наме }}х1>
<х3>Састојцих3>
<стр>{{ рецепт.састојци }}стр>
<х3>Упутствах3>
<стр>{{ рецепт.упутства }}стр>
<стркласа=„текст је искључен“>Направљено: {{ реципе.дате_цреатед }}стр>
див>
центар>
{% ендблоцк %}

ХТМЛ шаблон изнад враћа детаље о одређеном рецепту. У претраживачу, горња страница би требало да изгледа овако:

Приметићете да УРЛ сада садржи шта год да сте додали у своју базу података за сваки рецепт. Ако не разумете како систем шаблона функционише, прво би требало да научите наслеђивање шаблона у Дјангу и Дјанго МВТ архитектура.

Аутоматски генеришите пуж у Дјангу

Код пужева, оно што заиста желите је да их аутоматски генеришете на основу поља у вашем моделу. Да бисте то урадили, морате да измените сачувати() метод у вашем моделу и наведите своја правила пре него што се објекти сачувају у бази података. Ево једноставног примера који можете додати својој класи модела:

# импорт слугифи
из дјанго.темплате.дефаултфилтерс увоз слугифи

дефсачувати(селф, *аргс, **кваргс):
аконе селф.слуг:
селф.слуг = слугифи (селф.наме)
супер().саве(*аргс, **кваргс)

Горња функција прво проверава да ли постоји пуж за објекат модела. Ако нема пужа, користи се слугифи функција за генерисање једног из поља за име у моделу. Након надјачавања сачувати() методом, отворите свој административни панел и додајте неке рецепте. Овог пута, не морате да попуњавате поље за пужеве јер ће оно аутоматски бити попуњено када сачувате свој рецепт.

Ако одете до странице са детаљима вашег недавно доданог рецепта, видећете да УРЛ користи име рецепта као пуж.

Понекад ћете имати више рецепата са истим именом и то ће узроковати грешке у вашем пужу. Ово можете да поправите додавањем јединственог елемента у свој пуж као што је датум креирања. Ево једноставног примера:

селф.слуг = слугифи (селф.наме + "-" + стр (селф.дате_цреатед))

Користите пужеве за побољшање УРЛ искуства

За разлику од старих добрих пк, пужеви пружају многе предности укључујући флексибилност и преносивост пошто нису везани за специфичне УРЛ идентификаторе као што је примарни кључ. Стога, ако промените структуру базе података или мигрирате своје податке, и даље можете да одржавате доследне УРЛ адресе. Пужеви такође побољшавају СЕО пријатељство.