Template genişletmek
Django'nun size sunduğu başka bir güzellik de template genişletmektir. O da ne demek? Şu demek, HTML dosyanızın bazı bölümlerini birden fazla sayfanızda kullanabilirsiniz.
Templatelar aynı bilgiyi ya da yerleştirmeyi (layout) birden fazla yerde kullanmak istediğinizde yardım ederler. Yaptığınızı her dosya için tekrar etmek zorunda kalmazsınız. Ve bir şey değiştirmek isterseniz, tüm templatelarda değil sadece bir tanesinde değiştirirsiniz!
Bir Temel Template Oluştur
Temel template web sitenizin bütün sayfalarında genişletebileceğiniz en temel template'inizdir.
Şimdi blog/templates/blog/
klasörü içinde base.html
adlı bir dosya oluşturalım:
Sonra bunu açalım ve post_list.html
dosyasındaki her şeyi aşağıdaki gibi base.html
'ye kopyalayalım:
Sonra, base.html
dosyasındaki <body>
'nizi (<body>
ve </body>
arasında kalan her şeyi) şununla değiştirin:
Her şeyin bununla değiştirildiğini fark edebilirsiniz{% for post in posts %}
dan{% endfor %}
bununla:
Ama neden? Bir blok
oluşturdunuz! `
` içinde HTML ekleyecek alan yapmak için şablon etiketi kullandınız. HTML başka bir şablondan gelecek (`base.html`) bu şablonu genişletir. Bunun nasıl yapıldığını da hemen göstereceğiz.
Şimdi base.html
'i kaydedelim ve blog/templates/blog/post_list.html
dosyamızı tekrar açalım. {% for post in posts %}
'ın üzerindeki ve {% endfor %}
'ın altındaki her şeyi kaldıracaksınız. İşiniz bittiğinde dosya şu şekilde görünecektir:
Bunu, bütün içerik blokları için şablonumuzun bir parçası olarak kullanmak istiyoruz. Şimdi bu dosyaya blok etiketleri ekleme zamanı!
Blok etiketinizin base.html
dosyanızdaki etikete uymasını istiyorsunuz. Ayrıca içerik bloklarınına ait bütün kodu da dahil etmek istiyorsun. Bunu yapmak için, her şeyi {% block content %}
ve{% endblock %}
'un arasına yerleştir. Şunun gibi:
Geriye tek bir şey kaldı. Bu iki şablonu birbirine bağlamamız gerekiyor. Genişleyen şablonlar tam da bununla ilgili! Bunu dosyanın başlangıcına genişleyebilir etiketler ekleyerek yapacağız. Bunun gibi:
İşte bu! Dosyayı kaydedip sitenizin hala düzgün çalışıp çalışmadığını kontrol edin. :)
Eğer
TemplateDoesNotExist
hatasını alıyorsanız, bunun anlamıblog/base.html
dosyası yok ve konsoldarunserver
'ı çalıştırıyorsunuz demektir. Konsolda durdurmayı deneyin (Ctrl+C -Control ve C tuşlarına birlikte basarak) vepython manage.py runserver
komutunu çalıştırarak yeniden başlatın.
Last updated