Giriş
Django, Python’un en popüler web geliştirme çerçevelerinden biridir. Geliştiricilere hızlı bir şekilde ölçeklenebilir ve güvenli web uygulamaları inşa etme imkanı sunar. Django’nun sunduğu pek çok özelliklerden biri de template sistemidir. Bu makalede, Django template kullanımını detaylı bir şekilde inceleyeceğiz. Temel okuma hızı ve erişilebilirlik açısından, her aşamayı anlaşılır bir dille ele almayı hedefliyorum.
Template’lar, web sayfalarının tasarımını ayırmamıza olanak sağlar ve içerik ile sunum arasındaki ilişkiyi yönetmemizi kolaylaştırır. Django template sistemi, dinamik içerik sunmak için mükemmel bir araçtır. SQL sorguları veya diğer işlevleri yazarken temiz kod yapısına sadık kalmak önemlidir; işte burada Django’nun template motoru, kodunuzun okunabilirliğini büyük ölçüde artırır.
Bu makalede, Django template’larının nasıl oluşturulacağını, verilerin bu template’lara nasıl geçirileceğini ve şablonların nasıl basit ve karmaşık yapılar oluşturabileceğini öğreneceksiniz. Her aşamada örneklerle konuları pekiştirerek, okuyucuları kendi projelerinde denemeler yapmaya teşvik etmeyi amaçlıyorum.
Django’da Template Yaratma
Django projenizde bir template oluşturmak oldukça basit. Öncelikle, projenizin ana dizininde bir ‘templates’ klasörü oluşturmanız gerekiyor. Bu klasör, tüm template dosyalarınızı içerecek ve Django’nun bu dosyalara erişimini sağlayacaktır.
Örneğin, ‘myapp’ adlı bir Django uygulamanız olduğunu varsayalım. Bu durumda, şunları yapmalısınız:
- ‘myapp/templates/myapp’ adında bir dizin oluşturun.
- Bu dizin içerisinde, ‘index.html’ gibi bir HTML dosyası oluşturun.
- index.html dosyasının içeriğine, temel bir HTML yapısı ekleyerek başlayabilirsiniz.
Aşağıdaki gibi basit bir index.html dosyası içeriği oluşturabilirsiniz:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Django Template Örneği</title>
</head>
<body>
<h1>Merhaba Django Template!</h1>
<p>Bu, ilk Django template örneğiniz.</p>
</body>
</html>
Bu temel yapının ardından, Django’nun template motorunu kullanarak dinamik verileri nasıl yerleştireceğinizi öğreneceğiz. İlk adım, HTML içeriklerini yönetebileceğiniz basit bir view oluşturmak olacaktır.
Django Views ile Template Bağlantısı
Django’da bir template kullanmak için öncelikle bir view (görünüm) tanımlamanız gerekiyor. View, kullanıcıdan gelen istekleri işleyen ve uygun veriyi template’lara gönderen bir fonksiyondur.
Öncelikle, views.py dosyanızda bir fonksiyon oluşturmalısınız:
from django.shortcuts import render
def home(request):
return render(request, 'myapp/index.html')
Yukarıdaki kodda, render
fonksiyonu, kullanıcının home
view’ine gittiğinde, myapp/index.html
template dosyasını yükler.
İlk view’inizi tanımladıktan sonra, urls.py dosyanıza yönlendirme eklemeniz gerekiyor:
from django.urls import path
from .views import home
urlpatterns = [
path('', home, name='home'),
]
Yukarıdaki kod, ana sayfanızda home view’ını çağırır ve index.html
dosyasını görüntüler. Bu, kullanıcılarınızın erişebileceği temel bir yol tanımlamaktadır.
Django Template İçerisinde Değişken Kullanımı
Django template motoru, dinamik verilerinizi HTML içerisine gömmenizi sağlayan değişkenler ile çalışır. Örneğin, view fonksiyonunuza bazı veriler ekleyebilirsiniz:
def home(request):
context = {
'message': 'Merhaba Django kullanıcıları!'
}
return render(request, 'myapp/index.html', context)
Burada context
adlı bir sözlük oluşturduk ve message
anahtarını belirledik. Bu değişkeni index.html
dosyasında görüntüleyebiliriz:
<p>{{ message }}</p>
Bu snippet, template içinde değişken kullanmanın basit bir örneğidir. Template motoru, Python kodunu yazmadan verileri yerleştirmemizi sağlar. Böylece, hem kodun temiz kalmasını sağlar, hem de veri akışını düzenler.
Django Template’larında Kontrol Yapıları
Django template motoru, if, for gibi kontrol yapıları kullanarak verilerinizi daha dinamik hale getirmenizi sağlar. Örneğin, bir listeyi döngü ile görüntülemek istiyorsanız, şu şekilde yapabilirsiniz:
def home(request):
items = ['Python', 'Django', 'HTML', 'CSS']
context = {'items': items}
return render(request, 'myapp/index.html', context)
Template dosyanızda ise, aşağıdaki gibi bir yapı kullanarak liste elemanlarını döngü ile görüntüleyebilirsiniz:
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
Bu kontrol yapıları, dinamik içerik oluşturmayı kolay hale getirir ve uygulamanızın esnekliğini artırır. Örneğin, bir veritabanından çektiğiniz sonuçları template içerisine çekebilir ve kullanıcıların filtreleme veya sıralama işlemlerini gerçekleştirmesine olanak tanıyabilirsiniz.
Django Template’larında Hata Yönetimi
Template’larınızda hata yönetimi yapmanız oldukça önemlidir. Kullanıcıların önceki sayfalardan gelen verilerinin kullanılabilirliğini kontrol etmek, uygulamanızın güvenliğini artırır. Örneğin, bir değişken tanımlı değilse, bu durumda bir varsayılan mesaj göstermek isteyebilirsiniz:
<p>{{ message|default:"Mesaj yok" }}</p>
Burada, default
filtresi sayesinde, message
değişkeni null ise