
Когато се занимават с уеб разработка, един от важните елементи, с които повечето разработчици се сблъскват, е представянето на един и същ вид и усещане в целия уебсайт. Един от най-ефективните начини за постигане на такава последователност е чрез използване на базови шаблони или base.html в Django, уеб рамка на високо ниво на Python, която насърчава бързото развитие. Drupal използва концепцията за наследяване по най-добрия начин и предоставя механизъм за разширяване на базовите шаблони към множество дъщерни шаблони.
За да решите проблема с наличието на последователен елемент на дизайна във вашия уебсайт, разширението на два основни шаблона може да бъде полезно. Базовите шаблони съдържат скелетната структура на HTML, която остава постоянна в уеб приложението. Дъщерните шаблони съдържат съдържанието за отделни уеб страници, което варира от страница на страница. Тези дъщерни шаблони наследяват свойства от родителските базови шаблони, като използват наследяване на шаблони.
Сега нека се задълбочим в обяснението стъпка по стъпка на кода, свързан с проблема.
Примерният базов шаблон може да се дефинира като:
<!DOCTYPE html> <html lang="en"> <head> {% block head %} <title>My Site</title> {% endblock %} </head> <body> {% block content %} {% endblock %} </body> </html>
След това base.html може да бъде разширен от дъщерен шаблон като:
{% extends "base.html" %} {% block head %} <title>My Page</title> {% endblock %} {% block content %} <h1>Welcome!</h1> <p>Here is your content...</p> {% endblock %}
Това е за разширяване на единичен основен шаблон. Но какво ще стане, ако имате два основни шаблона за разширяване? Тук нещата стават малко трудни, тъй като Python не поддържа директно множествено наследяване.
Заобиколни решения за множество основни шаблони
Номерът се крие в разделянето на вашето съдържание на множество секции или блокове. По-долу е даден пример как можете да успеете да разширите два основни шаблона с помощта на блокове.
{% block content %} {% block content_one %} {% endblock %} {% block content_two %} {% endblock %} {% endblock %}
Тук блокът „съдържание“ от основния шаблон е допълнително разделен на два други блока – „content_one“ и „content_two“. Различни базови шаблони могат да разширят тези блокове.
Python Libray: Django
Когато става въпрос за уеб разработка с Python, Django е най-популярната и мощна Python уеб рамка. Той следва принципа DRY (не повтаряй себе си), който насърчава повторното използване на компонентите. Механизмът за шаблони на Django, част от рамката на Django, е основен, но мощен инструмент за уеб разработка отпред, който ни позволява да разширим стойността на Python в мрежата.
В заключение, възможно е да се разширят два основни шаблона в Django, въпреки че рамката не поддържа директно множествено наследяване. Ключът е да сегментирате съдържанието в множество блокове, които различните базови шаблони могат да разширяват. Това е най-ефективното заобиколно решение на проблема и носи силата на повторното използване на вашите шаблони, като по този начин прави вашия код по-ефективен и управляем.
Забележка: Механизмът за шаблони на Django използва език, наречен Django Template Language (DTL), който заема част от синтаксиса си от Python, но самият той не е код на Python.