Една от най-мощните функции на Django е способността му да използва повторно код динамично. Наследяването на шаблон позволява споделяне на код между родителски и дъщерни шаблони. Това значително намалява дублирането на усилия.
Django има свой шаблонен език, проектиран да се смесва с HTML. Ще откриете, че е лесно да работите с шаблоните на Django, ако сте работили с HTML код преди. Други текстови шаблонни езици като Smarty или Jinja2 имат подобен синтаксис.
Нека научим повече за наследяването на шаблони, като изградим Django проект.
Какво е Django шаблон?
В Django шаблонът е текстов файл, който може да генерира произволен текстов формат, като HTML, XML или CSV.
Django шаблонни етикети контролира логиката, обхващаща променливи и стойности в шаблона. Етикетите помагат да се отдели логиката на програмата от представянето на шаблона. Те също помагат да поддържате вашите шаблони чисти и организирани.
Django има много вградени тагове, които изглеждат като {% етикет %}. Етикетите са полезни по много начини. Те могат да създават текст в изхода, да изпълняват цикли и да зареждат информация в шаблона.
Ще използвате тагове в този проект, за да демонстрирате наследяване на шаблони.
Създайте Django проект
За да започнете, създайте Django проект. Създайте приложение с име шаблони. След като го направите, сте готови да създадете функция за изглед за приложението, URL път и шаблони, за да демонстрирате наследяването на шаблони.
Създайте функция за изглед
Първо създайте a изглед функция, която изобразява шаблоните. В този случай вие ще изобразите index.html шаблон. Импортирайте изобразявам метод от преките пътища на Django. След това създайте функция за изглед, наречена индекс, която връща и изобразява шаблона на индекса.
от django.shortcuts импортиране изобразявам
# Създайте своите изгледи тук.
дефиндекс(заявка):
връщане на изобразяване (заявка,'index.html')
Създайте URL път
След това създайте a URL път за функцията за преглед за показване на шаблоните. Импортирайте път функция от django.urls и изглед функция от views.py файл. След това импортирайте настройки и статичен за изобразяване на всякакви изображения и медии, които може да имате в шаблоните.
от django.urls импортиране път
от. импортиране изгледи
от django.conf импортиране настройки
от django.conf.urls.static импортиранестатичен
urlpatterns=[
път ('',views.index, име='индекс'),
]
аконастройки.DEBUG:
urlpatterns+=статичен(настройки. MEDIA_URL, document_root=настройки. MEDIA_ROOT)
Създаване на шаблони
Сега, когато имате изглед и URL адрес път, създайте шаблоните. За да демонстрирате наследяване на шаблон, създайте a база.html като родителски шаблон. The база.html файлът ще има общи елементи, с които искате да споделите index.html, дъщерният шаблон.
{% зареждане на bootstrap5 %}
{% натоварване статичен %}
<!DOCTYPE html>
<html lang="en">
<глава>
<мета charset="UTF-8">
<мета http-equiv="X-UA-съвместим" съдържание="IE=ръб">
<мета име="прозорец за изглед" съдържание="ширина=ширина на устройството, начален мащаб=1.0">
<!-- заглавия -->
{% if title %}
<заглавие> Наследени шаблони {{title}}</title>
{% друго %}
<заглавие> Наследени шаблони </title>
{% endif %}
{% блок стилове %}
{% bootstrap_css %}
<връзка rel="таблица със стилове" href="{% статичен 'css/style.css' %}">
{% endblock %}
</head>
<тяло>
{% включват 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Bootstrap връзки -->
<скрипт src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" почтеност="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" кръстосано начало="анонимен"></script>
</body>
</html>
Първо, заредете Bootstrap и статичните зависимости на база.html шаблон. Можеш използвайте рамката Bootstrap с вашия проект Django за стилизиране на HTML страниците. Статичната зависимост, заредена в горната част, ще зареди активи, включени в статичната папка.
Django шаблоните ви позволяват да предавате части от логика, отговорни за показването на съдържание. Етикетите на шаблона се състоят от текст, заобиколен от "{%" и "%}"знаци. The ако/иначе оператор проверява за условия във функцията за изглед. Ако условието е вярно, то изобразява съдържанието в първия блок; ако е невярно, ще изобрази съдържанието във втория.
The база.html файл също ще изобрази съдържанието на navbar.html точно там, където поставяте етикетите на шаблона. Това означава, че всеки път, когато удължите база.html, navbar.html също се предава по наследство. Всеки шаблон, разширяващ база.html ще наследи всеки елемент с an {% включват %} етикет.
Всеки текст, заобиколен от {{}} е шаблонна променлива. Променливите на шаблона са динамични данни, предоставени от функции за изглед. Django също използва блокиращи тагове, които използват отворен етикет, като {% блокиране на съдържанието %}, и затварящ етикет, като {% endblock %}.
Блоковите тагове позволяват на дъщерните шаблони да заменят съдържанието на родителските шаблони. В този случай, index.html може да замени съдържанието си в зоната, оградена от блокови тагове. Няма да пречи на другия база.html компоненти.
Нека приложим логиката към index.html
{% се удължава 'база.html' %}
{% блокиране на съдържанието %}
<div клас="контейнер текстов център" стил="цвят: бял">
<h1>Аз съм шаблонът на индекса</h1>
<стр>Наследих Bootstrap и навигационната лента от base.html</стр>
</div>
{% endblock %}
В index.html шаблон, използвайте {% разшири %} етикет за разширяване на компонентите на база.html. Вътре в блоковите тагове {% блокиране на съдържанието %}, напишете целия си код.
В index.html шаблон, имате H1 и параграф елемент. Можете да използвате маркерите на шаблона вътре в div, за да извиквате променливи от изглед функция.
Тествайте наследяването на шаблони в браузъра
Вече можете да стартирате сървъра. След като го направите, проверете в браузъра дали index.html файлът наследи елементите на база.html. Това включва връзки към Bootstrap и navbar.html шаблон.
The index.html файлът трябва да наследи навигационната лента и стиловете Bootstrap от основния шаблон. Ако е така, правилно сте използвали наследяването на шаблона. Без него щеше да се наложи да добавите лентата за навигация и връзките на Bootstrap, където имате нужда.
Също така, всички промени, които правите в база.html ще се отрази във всички шаблони, към които се простира. Този принцип е важен при обработката на грешки. Можете лесно да идентифицирате шаблони с грешки.
Наследяването на шаблони е един от многото начини, по които Django прилага принципа Don't Repeat Yourself (DRY). Това ще направи вашето развитие много по-лесно и по-лесно.
Защо трябва да използвате Django Template Inheritance
Наследяването на шаблони на Django е една от най-сложните характеристики. Може да отнеме известно време, за да го разберете, но след като го направите, спестявате много усилия за разработка.
Наследяването на шаблони ви позволява да споделяте код между родителски и дъщерни шаблони. Това гарантира, че няма да пишете повтарящ се код във вашите шаблони.
Наследяването на шаблони е важно в големи Django проекти. В такива случаи има много приложения и много шаблони за проектиране. Родителските шаблони ви дават голям контрол върху другите компоненти на приложението.
Като научите шаблонната система на Django, можете да се насладите на писането на чист и мощен код.