Django’nun en güçlü özelliklerinden biri, kodu dinamik olarak yeniden kullanabilmesidir. Şablon devralma, üst ve alt şablonlar arasında kod paylaşımına izin verir. Çabaların tekrarını büyük ölçüde azaltır.
Django, HTML ile harmanlanmak üzere tasarlanmış kendi şablon diline sahiptir. Daha önce HTML koduyla çalıştıysanız, Django’nun şablonlarıyla çalışmayı kolay bulacaksınız. Smarty veya Jinja2 gibi diğer metin tabanlı şablon dilleri de benzer sözdizimine sahiptir.
Bir Django projesi oluşturarak şablon devralma hakkında daha fazla bilgi edinelim.
Django Şablonu nedir?
Django’da şablon, HTML, XML veya CSV gibi herhangi bir metin tabanlı format oluşturabilen bir metin dosyasıdır.
Django şablon etiketleri , şablondaki değişkenleri ve değerleri kapsayan mantığı kontrol eder. Etiketler, program mantığını şablon sunumundan ayırmaya yardımcı olur. Ayrıca şablonlarınızı temiz ve düzenli tutmanıza yardımcı olurlar.
Django, {% tag %} gibi görünen birçok yerleşik etikete sahiptir . Etiketler birçok yönden faydalıdır. Çıktıda metin oluşturabilir, döngüler gerçekleştirebilir ve şablona bilgi yükleyebilirler.
Şablon mirasını göstermek için bu projede etiketleri kullanacaksınız.
Django Projesi Oluşturma
Başlamak için bir Django projesi oluşturun . Templates adlı bir uygulama oluşturun . Bunu yaptıktan sonra, uygulama için bir görüntüleme işlevi, bir URL yolu ve şablon devralmayı göstermek için şablonlar oluşturmaya hazırsınız.
Bir Görünüm İşlevi Oluşturun
İlk olarak, şablonları işleyen bir görüntüleme işlevi oluşturun. Bu durumda, index.html şablonunu oluşturacaksınız. Django kısayollarından render yöntemini içe aktarın . Ardından, dizin şablonunu döndüren ve işleyen index adlı bir görüntüleme işlevi oluşturun.
from django.shortcuts import rendern# Create your views here.ndef index(request):n return render (request,’index.html’)
Bir URL Yolu Oluşturun
Ardından, görüntüleme işlevinin şablonları görüntülemesi için bir URL yolu oluşturun. Django.urls’den path işlevini ve views.py dosyasından view işlevini içe aktarın. Ardından , şablonlarda sahip olabileceğiniz tüm görüntüleri ve ortamları işlemek için ayarları ve statiği içe aktarın.
from django.urls import pathnfrom . import viewsnfrom django.conf import settingsnfrom django.conf.urls.static import staticnurlpatterns=[n path(”,views.index,name=’index’),n]nif settings.DEBUG:n urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Şablonlar Oluşturun
Artık görünüm ve URL yoluna sahip olduğunuza göre, şablonları oluşturun. Şablon devralmasını göstermek için üst şablon olarak bir base.html oluşturun. base.html dosyası , alt şablon olan index.html ile paylaşmak istediğiniz genel öğelere sahip olacaktır .
{% load bootstrap5 %}n{% load static %}n<!DOCTYPE html>n<html lang=”en”>n<head> n <meta charset=”UTF-8″>n <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>n <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>n <!– titles –>n {% if title %}n <title> Inherited Templates {{title}}</title>n {% else %}n <title> Inherited Templates </title>n {% endif %}n {% block styles %}n {% bootstrap_css %}n <link rel=”stylesheet” href=”{% static ‘css/style.css’ %}”>n {% endblock %}n</head>n<body>n {% include ‘navbar.html’ %}n {% block content %} {% endblock %}n <!– Bootstrap links –>n <script src=”https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js” integrity=”sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM” crossorigin=”anonymous”> </script>n</body>n</html>
İlk olarak, Bootstrap ve statik bağımlılıkları base.html şablonuna yükleyin. HTML sayfalarına stil vermek için Django projenizle Bootstrap çerçevesini kullanabilirsiniz . Üstte yüklenen statik bağımlılık, statik klasörde bulunan varlıkları yükler.
Django şablonları, içeriğin görüntülenmesinden sorumlu mantık parçalarını iletmenize izin verir. Şablon etiketleri, ” {% ” ve ” %} ” karakterleriyle çevrili metinden oluşur . if/else deyimi , görünüm işlevindeki koşulları kontrol eder. Koşul doğruysa, içeriği ilk blokta işler; false ise, içeriği saniye içinde işleyecektir.
base.html dosyası ayrıca navbar.html içeriğini şablon etiketlerini yerleştirdiğiniz yere de işleyecektir . Bu, base.html’yi her genişlettiğinizde , navbar.html’nin de devralındığı anlamına gelir. base.html dosyasını genişleten herhangi bir şablon, {% include %} etiketine sahip herhangi bir öğeyi devralır .
{{}} ile çevrili herhangi bir metin bir şablon değişkenidir. Şablon değişkenleri, görüntüleme işlevleri tarafından sağlanan dinamik verilerdir. Django ayrıca {% block content %} gibi bir açık etiket ve {% endblock %} gibi bir kapanış etiketi kullanan blok etiketleri kullanır .
Blok etiketleri, alt şablonların üst şablonların içeriğini geçersiz kılmasına izin verir. Bu durumda, index.html, içeriğini blok etiketleri tarafından çevrelenen alanda değiştirebilir. Diğer base.html bileşenleriyle karışmaz .
Mantığı index.html’ye uygulayalım
{% extends ‘base.html’ %}n{% block content %}n<div class=”container text-center” style=”color: white”>n <h1>I Am The Index Template</h1>n <p>I inherited Bootstrap and the navbar from base.html</p>n</div>n{% endblock %}n
index.html şablonunda, base.html’nin bileşenlerini genişletmek için { % extension %} etiketini kullanın . {% blok içeriği %} blok etiketlerinin içine tüm kodunuzu yazın.
index.html şablonunda bir H1’e ve bir paragraf öğesine sahipsiniz. Görünüm işlevinden değişkenleri çağırmak için div’lerin içindeki şablon etiketlerini kullanabilirsiniz .
Tarayıcıda Şablon Kalıtımını Test Etme
Artık sunucuyu çalıştırabilirsiniz. Bunu yaptıktan sonra, index.html dosyasının base.html öğelerini miras alıp almadığını görmek için tarayıcıyı kontrol edin . Bu, Bootstrap bağlantılarını ve navbar.html şablonunu içerir.
base.html’den navbar ile index.html
index.html dosyası , temel şablondan navbar ve Bootstrap stillerini devralmalıdır. Öyleyse, şablon devralmayı doğru şekilde kullandınız. O olmasaydı, ihtiyaç duyduğunuz yere gezinti çubuğunu ve Bootstrap bağlantılarını eklemeniz gerekirdi.
Ayrıca, base.html’de yaptığınız herhangi bir değişiklik, kapsamının genişletildiği tüm şablonlara yansır. Bu ilke, hata işlemede önemlidir. Hata içeren şablonları kolayca tanımlayabilirsiniz.
Şablon devralma, Django’nun Kendinizi Tekrar Etme (DRY) ilkesini uyguladığı birçok yoldan biridir. Geliştirmenizi çok daha kolay ve basit hale getirecektir.
Neden Django Şablon Kalıtımını Kullanmalısınız?
Django’nun şablon kalıtımı, en karmaşık özelliklerinden biridir. Bunu anlamak biraz zaman alabilir, ancak bir kez anladığınızda, çok fazla geliştirme çabası tasarrufu sağlar.
Şablon devralma, üst ve alt şablonlar arasında kod paylaşmanıza olanak tanır. Bu, şablonlarınıza tekrarlayan kodlar yazmamanızı sağlar.
Büyük Django projelerinde şablon devralma önemlidir. Bu gibi durumlarda, tasarlanacak birçok uygulama ve birçok şablon vardır. Ana şablonlar, uygulamanın diğer bileşenleri üzerinde size çok sayıda kontrol sağlar.
Django şablon sistemini öğrenerek temiz ve güçlü kod yazmanın keyfini çıkarabilirsiniz.