„Овај чланак је ревидиран и ажуриран најновијом верзијом Дјанга - мај 2016“
Ин Део 1 ове серије сте научили како да инсталирате и конфигуришете Дјанго у виртуелном окружењу и створили сте костур свог првог пројекта.
Затим у Део 2 направили смо апликацију и модел за пошта објеката, које смо касније мигрирали у базу података. Коначно, показали смо вам како да интегришете своју новостворену апликацију у кориснички интерфејс Дјанго администрације.
Ови чланци су део серије Дјанго:
Инсталирање и конфигурисање Дјанго Веб Фрамеворк -а са виртуелним окружењима - 1. део
Преглед основа Питхона и креирање прве веб апликације са Дјангом - 2. део
У овом последњем водичу разговараћемо о томе како приступити апликацији помоћу корисничког интерфејса и како је учинити прилагођеном мобилним уређајима за све врсте уређаја. Речено је, почнимо.
За креирање објеката типа пошта (запамтите да је то модел у којем смо дефинисали
Део 2 ове серије), користићемо Дјанго администраторски интерфејс.Уверите се да уграђени веб сервер Дјанго ради на порту 8000 (или неку другу по вашем избору) покретањем следеће команде са спољне стране мифирстдјангопројецт именик:
# цд ~/мифирстдјангоенв/мифирстдјангопројецт. # питхон манаге.пи рунсервер 0.0.0.0:8000.
Сада отворите веб прегледач и покажите на http://ip-address: 8000/админ
, затим се пријавите помоћу акредитива које сте поставили у претходном чланку и почните да пишете пост (који ће, опет, створити објекат типа пошта и уметните повезане податке у основну базу података):
Поновите поступак 2 или 3 пута:
Након што смо направили неколико постова, да видимо шта треба да урадимо да бисмо их приказали помоћу нашег веб прегледача.
Наш први поглед (~/мифирстдјангоенв/мифирстдјангопројецт/миблог/виевс.пи) ће бити задужен за филтрирање свега пошта објекте и враћа оне код којих је вредност када јеОбјављено је мањи или једнак тренутном датуму и времену (вхенПублисхед__лте = временска зона.нов ()) наређено спуштањем када јеОбјављено, што је исто што и рећи „најновије прво“.
Ови објекти се чувају у променљивој са прикладним називом постови и враћају (идентификовани као аллпостс) бити уграђен у ХТМЛ, као што ћемо видети у следећем одељку:
из дјанго.схортцутс импорт рендер. из .моделс импорт Пошта. из дјанго.утилс увози временску зону. деф постс (рекуест): постс = Пост.објецтс.филтер (вхенПублисхед__лте = тимезоне.нов ()). ордер_би ('-вхенПублисхед') ретурн рендер (рекуест, 'миблог/постс.хтмл', {'аллпостс': постс} )
Коначно, двоструко подвлачење вхенПублисхед__лте
горе се користи за одвајање поља базе података (када је објављено) из филтера или операције (лте = мање више или једнако).
Када дефинишемо почетни приказ, порадимо на повезаном предлошку.
Пратећи директиве и путање дате у претходном одељку, наш почетни предложак ћемо сачувати унутра миблог/темплатес/миблог. То значи да ћете морати да креирате именик под именом шаблоне и поддиректоријум тзв мој блог:
# цд ~/мифирстдјангоенв/мифирстдјангопројецт/миблог. # мкдир -п шаблони/миблог.
Позваћемо шаблон постс.хтмл
и унесите следећи код у њега. Приметићете да додајемо онлине референце на јКуери, Боотстрап, ФонтАвесоме и Гоогле фонтови.
Осим тога, Питхон код смо затворили унутар увијених заграда унутар ХТМЛ -а. Имајте на уму да ћемо за сваки објект типа Пост приказати његов наслов, датум објављивања и аутора, те на крају текст. Коначно, црвеном бојом ћете видети да се позивамо на објекте враћене преко миблог/виевс.пи:
У реду, ево постс.хтмл фајл:
Мој блог
{ % за пост у свим постовима %}{ % ендфор %}{{ Наслов поста }}Објавио {{пост.вхенПублисхед}} аутор {{пост.аутхор}}.{{пост.тект | преломи линија}}
У горе наведеном шаблон, преломи линија филтер се користи за замену прелома редова у обичном тексту одговарајућим ХТМЛ еквивалентом (
или
Затим морамо поставити мапирање између УРЛ -ова у нашој апликацији и одговарајућих приказа који враћају податке. Да бисте то урадили, направите датотеку под називом урлс.пи у мој блог са следећим садржајем:
фром дјанго.цонф.урлс импорт урл. фром. увези приказе. урлпаттернс = [урл (р '^$', виевс.постс, наме = 'постс'),]
Тхе р '^$'
заслужује мало више објашњења. Вођство р
упућује Дјанго да третира низ унутар појединачних наводника као регуларни израз.
Нарочито, р '^$'
представља празан низ тако да када усмеримо наш прегледач на http://ip-address: 8000
(и ништа друго), подаци које варијабла враћа постови у виевс.пи
(погледајте претходни одељак) биће представљени на нашој почетној страници:
На крају, али не и најмање важно, укључићемо урлс.пи датотеку наше апликације за блог (~/мифирстдјангоенв/мифирстдјангопројецт/миблог/урлс.пи) Инто тхе урлс.пи нашег главног пројекта (~/мифирстдјангоенв/мифирстдјангопројецт/мифирстдјангопројецт/урлс.пи):
фром дјанго.цонф.урлс импорт инцлуде, урл. фром дјанго.цонтриб импорт админ урлпаттернс = [урл (р '^админ/', инцлуде (админ.сите.урлс)), урл (р '', инцлуде ('миблог.урлс')),]
Затим покренимо веб сервер:
# цд ~/мифирстдјангоенв/мифирстдјангопројецт. # питхон манаге.пи рунсервер 0.0.0.0:8000.
Сада бисмо требали моћи да видимо спискове постова које смо раније креирали:
Захваљујући Боотстрап, и даље можете имати одличну визуализацију на мањем уређају:
Погледајмо сада концепте које смо обрадили у овом чланку и кроз ову серију:
1. Сваки модел дефинише објекат и пресликава га у табелу базе података, чија поља заузврат пресликавају својства тог објекта. С друге стране, а шаблон дефинише кориснички интерфејс на коме ће бити приказани подаци враћени приказом.
Рецимо да желимо да модификујемо наш модел додавањем поља под називом резиме до пошта објекта, где ћемо сачувати опционални кратак опис сваког поста. Додајмо следећи ред миблог/моделс.пи:
резиме = модели. ЦхарФиелд (мак_ленгтх = 350, бланк = Труе, нулл = Труе)
Као што смо сазнали у претходном чланку, морамо да пренесемо промене у базу података:
# питхон манаге.пи макемигратионс миблог. # питхон манаге.пи мигрирати миблог.
Затим помоћу администраторског интерфејса уредите постове и сваком чланку додајте кратак резиме. На крају, замените следећи ред у шаблону (постс.хтмл):
{{пост.тект | преломи линија}}
са
{{пост.суммари}}
Освежите почетну страницу да бисте видели промене:
2. А. поглед функција преузима ХТТП захтев и враћа ХТТП одговор. У овом чланку, деф постови (захтев) у виевс.пи упућује позив основној бази података да преузме све постове. Ако желимо да преузмемо све постове са речју ансибле у наслову бисмо требали заменити.
постс = Пост.објецтс.филтер (вхенПублисхед__лте = временска зона.нов ()) .ордер_би ('-вхенПублисхед')
са
постс = Пост.објецтс.филтер (титле__ицонтаинс = "ансибле") .ордер_би ('-вхенПублисхед')
Одвајањем корисничког интерфејса од логике апликације у веб апликацијама, Дјанго олакшава одржавање и ескалирање апликација.
3. Ако сте слиједили упутства наведена у овој серији, структура вашег пројекта требала би бити сљедећа:
мифирстдјангоенв/мифирстдјангопројецт. ├── дб.склите3. ├── манаге.пи. ├── миблог. │ ├── админ.пи. │ ├── админ.пиц. │ ├── __инит__.пи. │ ├── __инит __. Пиц. │ ├── миграције. │ │ ├── 0001_инитиал.пи. │ │ ├── 0001_инитиал.пиц. │ │ ├── __инит__.пи. │ │ └── __инит __. Пиц. │ ├── моделс.пи. │ ├── моделс.пиц. │ ├── шаблони. │ │ └── миблог. │ │ └── постс.хтмл. │ ├── тестс.пи. │ ├── урлс.пи. │ ├── урлс.пиц. │ ├── виевс.пи. │ └── виевс.пиц. └── мифирстдјангопројецт ├── __инит__.пи ├── __инит __. Пиц ├── сеттингс.пи ├── сеттингс.пиц ├── урлс.пи ├── урлс.пиц ├── всги.пи └── всги .пиц.
У случају да се горња листа не приказује исправно у вашем прегледачу, ево снимке екрана излаза следеће команде:
# дрво мифирстдјангоенв/мифирстдјангопројецт.
Иако сви ови концепти на први поглед могу изгледати помало застрашујуће, могу вас увјерити да је Дјанго вриједан свих напора потребних да се упознате с њим
Надам се да ће вас пример који смо користили у овој серији да вас упознамо са овим изванредним веб оквиром мотивисати да научите више. Ако је тако, службени Дјанго документација (које се стално ажурира) најбоље је место за почетак.
Уверавам вас да Дјанго има много више од онога што можемо адекватно покрити у низу чланака, па слободно то истражите и учите радећи!
Слободно нам пошаљите белешку са питањима или сугестијама користећи доњи образац.