Template extending
Django- ի մեկ այլ օգտակար բան **template extending/ձևանմուշի ընդլայնումն է ** : Ինչ է դա նշանակում? Ձեր կայքի տարբեր էջերիի համար կարող եք օգտագործել HTML- ի նույն մասերը:
Ձևանմուշներն/Templates օգնում են, երբ ուզում եք նույն տեղեկատվությունը կամ դասավորությունը օգտագործել մեկից ավելի վայրերում: Յուրաքանչյուր ֆայլում հարկավոր չէ կրկնել: Եվ եթե ուզում եք ինչ-որ բան փոխել, ապա հարկավոր չէ դա անել յուրաքանչյուր ձևանմուշում, այլ միայն մեկում:
Ստեղծեք բազային ձևանմուշ/ base template
Բազային ձևանմուշը/base template ամենահիմնական ձևանմուշն է, որը դուք տարածում եք ձեր կայքի յուրաքանչյուր էջում:
Եկեք ստեղծենք base.html
ֆայլ blog/templates/blog/
-ում:
Դրանից հետո բացեք այն կոդերի խմբագրում և պատճենեք ամեն ինչ ՝ post_list.html
- ից base.html
ֆայլը, ինչպես սա:
Դրանից հետո base.html
- ում փոխարինեք ձեր ամբողջ <body>
-ը (ամեն ինչ <body>
և </body>
- ի միջև) հետևյալով.
Ինչպես նկատեցիք, մենք փոխարինեցինք ամեն ինչ ՝ սկսած {% for post in posts %}
-ը, {% endfor %}
- ով փոխարինելով ՝
Բայց ինչու՞ Դուք հենց նոր block/բլոկ
ստեղծեցիք: Դուք օգտագործեցիք `
` ձևանմուշի պիտակը ՝ տարածք ստեղծելու համար, որտեղ կտեղադրվի HTML-ը : Այդ HTML- ը կգա մեկ այլ ձևանմուշից, որը տարածում է այս ձևանմուշը (`base.html`): Մենք ձեզ ցույց կտանք, թե ինչպես դա անել մեկ վայրկյանում:
Այժմ պահպանեք base.html
- ը և նորից բացեք ձեր blog/templates/blog/post_list.html
կոդերի խմբագրում: Դուք պատրաստվում եք հեռացնել ամեն ինչ, որը գտնվում է {% for post in posts %}
-ից վերևում, և {% endfor %}
-ից ներքևում: Ավարտելուց հետո ֆայլն այսպիսի տեսք կունենա.
Մենք ուզում ենք սա օգտագործել որպես մեր ձևանմուշի մի մաս ՝ բովանդակության բոլոր բլոկների համար: Ժամանակն է այս ֆայլին ավելացնել բլոկի պիտակները/block tags:
Դուք ցանկանում եք, որ ձեր բլոկի թեգը համընկնի base.html
ֆայլի պիտակի/ tag-ի հետ: Դուք նաև ցանկանում եք ներառել ամբողջ ծածկագիրը, որը պատկանում է բովանդակության բլոկներին/content blocks: Դա անելու համար ամեն ինչ տեղադրեք{% block content %} - ի և {% endblock %} - ի միջև: Սրա նման.
Մնում է միայն մեկ բան. Մենք պետք է այս երկու ձևանմուշները միացնենք միմյանց: Սա այն է, ինչ կոչվում է «ձևանմուշի ընդլայնում/extending templates»: Մենք դա կանենք ՝ ֆայլի սկզբին ընդլայնման պիտակ/ extends tag ավելացնելով: Սրա նման:
Վերջ Պահեք ֆայլը և ստուգեք, արդյոք ձեր կայքը դեռ պատշաճ կերպով աշխատում է: :)
Եթե
TemplateDoesNotExist
սխալ եք ստանում, դա նշանակում է, որblog/base.html
ֆայլը բացակայում է, և դուք ունեքrunserver
վահանակում: Փորձեք դադարեցնել այն (միաժամանակ սեղմելով Ctrl + C - Control և C ստեղները) և վերագործարկեք սերվերըpython manage.py runserver
հրամանի միջոցով:
Last updated