Django Web Çerçevesi. Mete Alpaslan KATIRCIOĞLU, Emre YÜCE mete.alpaslan@portakalteknoloji.com, emre.yuce@portakalteknoloji.com



Benzer belgeler
Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

Kullanıldığı Başlıca Siteler

EGE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Öğr. Gör. Serkan AKSU 1

MOBİL UYGULAMA GELİŞTİRME

DENEYİMLİ PROGRAMCILAR İÇİN DJANGO'YA GİRİŞ. Serdar Dalgıç Yazılım Geliştirme Uzmanı Markafoni 23 Kasım 2013 Yeditepe Üniversitesi

Üst Düzey Programlama

Web Uygulama Anaçatıları. Tahir Emre KALAYCI. May 5, 2009

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

Programlama Yazılımı ile Web Sitesi Oluşturma

Kurulum ve Başlangıç Kılavuzu. DataPage için

Linux Kurulumu (Sürüm 1.52) İçindekiler

4. Bağlantı (Köprü) Oluşturma

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Kurulum ve Başlangıç Kılavuzu. DataPage için

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

İSTANBUL RUMELİ ÜNİVERSİTESİ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI 1.SINIF 2.YARIYIL İNTERNET PROGRAMCILIĞI II DERS İZLENCESİ

Üst Düzey Programlama

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

Rails İle Ağ Uygulamaları Geliştirimi

Zope Uygulama Sunucusu

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Veri Tabanı Yönetim Sistemleri Bölüm - 3

İnternet Programcılığı

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

PostgreSQL ve PL/pgSQL

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Bölüm 4: DDL Veri Tanımlama Dili

2-Hafta Temel İşlemler

PostgreSQL Veritabanı Sunucusu Devrim GÜNDÜZ.

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

LINQ (Temel Kavramlar)

Android e Giriş. Öğr.Gör. Utku SOBUTAY

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

PHP CodeIgniter MVC Framework

E-Prints: Açık Erişimli Arşiv Oluşturma Yazılımı; Kurulumu-Kullanımı-Özellikleri

MOBİL UYGULAMA GELİŞTİRME

Bölüm 10: PHP ile Veritabanı Uygulamaları

Windows Grup İlkesi Düzenleyici

MODÜL 3 HTML İLE STİL ŞABLONLARI

Bilgisayarda Programlama. Temel Kavramlar

COĞRAFİ BİLGİ SİSTEMLERİ İLERİ SEVİYE EĞİTİMLERİ BUILDING GEODATABASE EĞİTİMİ

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

VERİTABANI Veritabanı Yönetimi

PYTHON PROGRAMLAMA DİLİ

Oracle da kullanılan veri tipleri:

Scan Station Pro 550 Adminstration & Scan Station Service Araçları

COĞRAFİ BİLGİ SİSTEMLERİ İLERİ SEVİYE EĞİTİMLERİ BUILDING GEODATABASE EĞİTİMİ

VERİ TABANI YÖNETİM SİSTEMLERİ I

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

VMware 4.0 vcenter Server Kurulumu

JSF Melih Sakarya. Java Server Faces Facelet

Veri Tabanı Yönetim Sistemleri Bölüm - 02

PostgreSQL ve PL/pgSQL

MASTER PAGE SAYFASI KULLANIMI

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Üst Düzey Programlama

Android Ders Notları

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

BİL-141 Bilgisayar Programlama I (Java)

INTERNET KAYNAKLARI. Wik.is Kılavuzu GRUP OTANTİK GRURLA SUNAR

API geliştiricileri. Web server ile yapılan entegrasyonun neticeleri. API Dokumantasyonu

MaestroPanel Kurulum

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

Coslat Monitor (Raporcu)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

Swing ve JDBC ile Database Erişimi

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

TÜİK e-vt Teknik Kılavuz

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

<Ekip Adı> <Proje Adı> Yazılım Gereksinimlerine İlişkin Belirtimler. Sürüm <1.0>

Client Server Database

Bilecik Üniversitesi Mühendislik Fakültesi Moodle Uzaktan Öğretim Sistemi

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

Veritabanı Uygulamaları Tasarımı

Başlangıç Ayarları.

1 İÇERİK YÖNETİM SİSTEMLERİ VE JOOMLA 1. İçerik Yönetim Sistemi (CMS) Nedir? 1. Neden Joomla? 2. Joomla nın Tarihi 3. Joomla nın Anlamı & Logosu 4

İÇERİK YÖNETİM SİSTEMİ (CMS) Bir web sitesi yayınlamak için yapılması gerekenler:

VERİ TABANI YÖNETİM SİSTEMLERİ

Transkript:

Akademik Bilişim 2008 Çanakkale Onsekiz Mart Üniversitesi, Çanakkale, 30 Ocak - 01 Şubat 2008 mete.alpaslan@portakalteknoloji.com, emre.yuce@portakalteknoloji.com Özet: Django Python Programlama Dili için hazırlanmış ve BSD lisansı ile lisanslanmış yüksek seviyeli bir web çatısıdır. Basit kurulumu ve kullanımı, detaylı hata raporu sayfaları ve sunduğu yeni arayüz kodlama yöntemleriyle diğer sunucu yazılımı ve çatılardan kendini ayırmaktadır. Django projesinin temel hedefi karmaşık bir yapıda olan ve bir veritabanı kullanan web uygulamarının gerçekleştirimini kolaylaştırmaktır. Django yeniden kullanılabilirlik, modülerlik, hızlı geliştirme süreci ve DRY prensiplerini sonuna kullanma politikasına sahip bir yapıda tasarlanmaktadır.bu yazı Django Web Uygulama Çatısını kullanarak web servislerinin geliştirme sürecini MVC web mimarisini anlatmaktadır. Anahtar Sözcükler: Django Web Framework, Python, Apache 1.Giriş Django Python Programlama Dili için hazırlanmış ve BSD lisansı ile lisanslanmış, modüler, pragmatik bir tasarımla hızlı bir şekilde web uygulamaları geliştirmenize olanak sağlayan açık kaynak kodlu bir platformdur. Django Web Uygulama Çatısında yeniden kullanılabilirlik, modülerlik, hızlı geliştirme süreci ve DRY(Don t Repeat Yourself) prensiplerini sonuna kadar kullanma politikasına sahip bir yapıda tasarlanmasıyla uygulama geliştirme sürecini olabildiğince otomatize etmesi ve böylece tekrarları ortadan kaldırması en büyük artılarındandır. Django Çerçevesinin temel bilişenlerinin sunduğun en önemli özellikler; Modellerin yaratılması için nesne ile ilişkisel eşleme Son kullanıcılar için tasarlanmış hoş görünümlü yönetici arabirimi Zarif URL tasarımı Tasarımı kolay şablon dili Önbelleğe alma sistemidir. Django mimari olarak MVC (Model-View- Controller) yapısını kullanarak geliştirme sürecinde verinin tanımlanması ve erişilmesi için yazılan kodun (model) istek yönlendirme mantığından (controller) yani kullanıcı arayüzünden(view) ayrılmasını sağlayan bir yazılım geliştirme yöntemi tanımlar.web Çatısının bileşenlerinin birbiriyle Djangodaki gibi gevşek bir şekilde bağlandığı çalışma ortamında projedeki geliştirici uygulamanın bir bölümündeki adres ilgili yapmak istediği değişikleri altındadaki implemantasyona etkilemeden yapabilirken, bir taraftan da tasarımcı sayfaların görünümünü Python kodlarına dokunmadan değiştirebilme ya da veritabanı yöneticisinın veritabanı tablolarını yeniden isimlendirebilme fırsatı olur.django hızlı bir geliştirme süreci sağlar. 2.Django Projeleri ve Uygulamaları Bir Django Projesini başlatmak için aşağıda anlatıldığı gibi django-admin startproject komutunu kullanın: 51

Liste 1. Bir projenin başlatılması $ django-admin.py startproject ab08 Eğer sunum dizinin içeriğini listelersek: Liste 2. Bir projenin içeriği $ ls -l sunum/ init.py manage.py settings.py urls.py init.py dosyası bu klasörle birlikte bundan sonra oluşturacağınız tüm uygulama modüllerinde de yer alacak boş bir dosyadır. Bulunduğunuz klasörün aynı zamanda bir Python paketi olduğunu gösteren init. py, aynı zamanda paketin ilk çalıştırılan dosyasıdır. manage.py, bundan sonraki tüm aşamalarda yeni uygulama modülü yaratırken; veritabanı tablolarını, ilişkilerini yaratırken kullanacağımız dosyadır. urls.py dosyasını istek yapılan adresin görünümle(view) eşleştirme yapabilmeniz için gereklidir. settings.py dosyasıyla yaratttığınız projenin yapılandırılmasının yapabilirsiniz. Liste 3. manage.py startapp nin kullanılması $ python manage.py startapp bildiri Bu komut, modelleriniz için bir Python modülü ve görünümleriniz için bir Python modülü olan temel bir uygulama bir yaratır. bildiri dizini aşağıdaki dosyaları içerecektir: Liste 4. Bir projenin bildiri uygulamasının içeriği $ ls -l ab08/bildiri init.py models.py views.py models.py dosyası veritabanı tablolarının tanımlandığı Python sınıfları içerir.bu sınıfları kullanarak tekrarlayan SQL ifadeleri yerine Python kodlarıyla veritabanınızdaki kayıtlar üzerinde işlemler yapabilirsiniz. views.py dosyasıyla veritabanınızdaki kayıtlar üzerinde işlem yaptığınız ve sonucunda web arayüzünde göstereceğiniz fonksiyonlar tanımlayabilirsiniz. Django nun yeni bir uygulamadan haberdar olması için, settings.py dosyasında INSTAL- LED_APPS alanına bir giriş eklemeniz gerekir. Bu bildiri uygulaması için, ab08. bildiri dizisi eklenmelidir: Liste 5. settings.py ye bir giriş eklenmesi INSTALLED_APPS = ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.sites, ab08.bildiri, ) 3.Bir Model Yaratılması Django, bir Python nesne arabirimi yoluyla dinamik veritabanı arabirimi erişimini destekleyen kendi nesne ile ilişkisel eşleyici (ORM; object-relational mapper) kitaplığıyla birlikte sağlanır. 52

Akademik Bilişim 2008 ORM şu anda PostgreSQL, MySQL, SQLite ve Microsoft SQL veritabanları için destek sağlar.bu örnekte veritabanı arka ucu olarak SQLite kullanılmıştır. SQLite, hiçbir yapılandırma gerektirmeyen ve diskte basit bir dosya olarak yer alan basit bir veritabanıdır. SQLite ı kullanmak için, ayar araçlarını kullanarak yalnızca pysqlite kitaplığını kurun. Liste 6.Veritabanının settings.py de yapılandırılması DATABASE_ENGINE = sqlite3 DATABASE_NAME = /path/to/ ab08/database.db DATABASE_USER = DATABASE_PASSWORD = DATABASE_HOST = DATABASE_PORT = Bu bildiri uygulamasının conflocation (Konferans şehri) ve paper (makale) olmak üzere 2 tip nesnesi olacaktır. Bir conflocation nesnesi yıl ve şehri isteğe bağlı alanları içerir, paper nesnesi de bildiri sahibi bildiri başlığı ve özeti, bildiri sahibinin e-posta adresi ve bildiri yükleme alanlarını içeriri Liste 7. bildiri/models.py modülü str yöntemi, bir nesnenin dize gösterimini döndüren Python ürününün içerdiği özel bir sınıf yöntemidir. Django Admin aracında nesneleri görüntülerken bu yöntemi yaygın olarak kullanır. Modele ilişkin veritabanı şemasını görmek için manage.py nin sql komutunu çalıştırın ama henüz şema canlandırılmayacaktır (enact). from django.db import models class conflocation(models.model): year = models.datefield() state = models.charfield(maxlength=50) class Admin: pass def str (self): return %s, %s % (self.year, self.state) class paper(models.model): id = models.autofield( ID, primary_ key=true) author = models.charfield(maxlength=50) title = models.charfield(maxlength=50) summary = models. CharField(maxlength=50) email= models.emailfield() upload = models.filefield(upload_ to= files ) location = models. ForeignKey(confLocation) class Admin: pass def str (self): return (%s) %s %s (self.id,self.title) Liste 8. manage.py sql komutunu kullanarak veritabanı şemasının görüntülenmesi Modeli başlatmak ve kurmak için, syncdb veritabanını eşitle komutunu çalıştırın: Liste 9. syncdb komutunun kullanılarak modelin kurulması ve başlatılması $ python ab08/manage.py syncdb syncdb komutunun sizden bir süper kullanıcı hesabı yaratmanızı ister, bunun nedeni, temel kullanıcı doğrulaması işlevini sağlayan django.contrib.auth uygulamasının, INSTAL- LED_APPS ayarlarınızda varsayılan değer olarak sağlanmasıdır. 53

$ python ab08/manage.py sql bildiri BEGIN; CREATE TABLE bildiri_paper ( id integer$ python ab08/manage.py sql bildiri BEGIN; CREATE TABLE bildiri_paper ( id integer NOT NULL PRIMARY KEY, author varchar(50) NOT NULL, title varchar(50) NOT NULL, summary varchar(50) NOT NULL, email varchar(75) NOT NULL, upload varchar(100) NOT NULL, location_id integer NOT NULL CREATE TABLE bildiri_conflocation ( id integer NOT NULL PRIMARY KEY, year date NOT NULL, state varchar(50) NOT NULL COMMIT; NOT NULL PRIMARY KEY, author varchar(50) NOT NULL, title varchar(50) NOT NULL, summary varchar(50) NOT NULL, email varchar(75) NOT NULL, upload varchar(100) NOT NULL, location_id integer NOT NULL CREATE TABLE bildiri_conflocation ( id integer NOT NULL PRIMARY KEY, year date NOT NULL, state varchar(50) NOT NULL COMMIT; Not: Sisteminizin süper kullanıcısı değil, Django süper kullanıcısı olduğu unutmayın. 4.Admin (Yönetici) Aracı Django nun tercih edilmesinde en büyük rolü taşıyan özelliği, sahip olduğu hoş görünümlü yönetici arabirimidir. Bu araç, son kullanıcılar düşünülerek tasarlanmıştır. Bu araç projelerinize büyük bir veri girişi aracı sağlar. Admin aracı, Django ile birlikte sağlanan bir uygulamadır. Kullanabilmeniz için bunun da jobs uygulaması gibi, önce kurulması gerekir. Bunun için ilk adım, uygulamanın modülünü (django.contrib.admin) INS- TALLED_APPS ayarına eklemektir: Liste 10. settings.py nin değiştirilmesi INSTALLED_APPS = ( django.contrib.auth, django.contrib. contenttypes, django.contrib. sessions, django.contrib.sites, ab08.bildiri, django.contrib.admin, ) Admin aracının /admin URL sinden kullanılmasını sağlamak için, yalnızca projenizin urls. py dosyasında sağlanan satırı devre dışı bırakın. Bir sonraki bölümde URL yapılandırması daha ayrıntılı biçimde açıklanacaktır. Liste 11. Admin aracının urls.py yoluyla sağlanması from django.conf.urls. defaults import * urlpatterns = patterns(, (r ^admin/, include( django.contrib. admin.urls.admin )), ) 5.URL Düzeninizin Tasarlanması Django URL dağıtım sistemi, URL dizesi desenlerini views (görünümler) olarak adlandırılan Python yöntemleriyle eşleyen normal anlatım yapılandırma modüllerini kullanır. Bu sistem, URL lerin temel koddan tamamen ayrıştırılmalarına olanak tanıyarak en üst düzeyde denetim ve esneklik sağlar. Bir urls.py modülü, URL yapılandırmaları için varsayılan başlangıç noktası olarak yaratılır ve 54

Akademik Bilişim 2008 tanımlanır (settings.py modülündeki ROOT_ URLCONF değeri yoluyla). Bir URL yapılandırma dosyası için tek gereksinim, urlpatterns olarak adlandırılan desenleri tanımlayan bir nesne içermesi zorunluluğudur. Bildiri uygulaması, aşağıdaki URL eşlemeleri yoluyla erişilebilecek bir dizin ve ayrıntılı görünümle başlayacaktır: /bildiri dizin görünümü: Bildirileri görüntüler. Liste 12. ab08/urls.py: URL lerin projeye geri bağlanması from django.conf.urls. defaults import * urlpatterns = patterns(, (r ^admin/, include( django.contrib. admin.urls.admin )), (r ^bildiri/, include( ab08.bildiri. urls )),) Bu noktada test sunucunuzu kullanarak dizin sayfasına (http://localhost:8000/jobs) erişmeye çalışırsanız, çağrılan görünüm (djproject. jobs.views.index) henüz var olmadığı için bir hata iletisi alırsınız. 6.Görünümlerin Uygulanması Görünüm, bir istek nesnesini kabul eden bir Python yöntemidir ve aşağıdakilerden sorumludur: Herhangi bir iş mantığı (doğrudan ya da dolaylı olarak) Şablona ilişkin verileri kapsayan bir içerik sözlüğü Şablonun bir içerikle oluşturulması Oluşturulan sonuçları çerçeveye geri taşıyan yanıt nesnesi Django'da, bir URL istendiğinde çağrılan Python yöntemi bir view (görünüm) olarak adlandırılır ve view tarafından yüklenen ve oluşturulan sayfaya template (şablon) adı verilir. Bu nedenle, Django ekibi Django dan bir MVT (model-görünüm-şablon) çerçevesi olarak bahseder. Diğer yandan, TurboGears, MVC kısaltmasına tam olarak uyması için, yöntemlerini controllers (denetleyiciler) ve bunların oluşturduğu şablonları views (görünümler) olarak adlandırır. Bunlar aynı işlevleri içerdiğinden, fark büyük ölçüde anlama dayalıdır. Liste 13. bildiri/views.py from django.http import HttpResponse from django.template import Context, loader from bildiri.models import paper def index(request): list = paper.objects.order_ by( title ) tmpl = loader.get_ template( bildiri/list.html ) context = Context({ list : list }) return HttpResponse(tmpl. render(context)) 7.Şablonların Yaratılması Django, hızlı oluşturma ve kullanım kolaylığı için tasarlanan basit bir şablon dili sağlar. Django şablonları, {{ variables }} (değişkenler) ve {% tags %} (etiketler) ile yerleşik olan düz metin kullanılarak yaratılır. Değişkenler değerlendirilir ve bunların yerini temsil ettiği değerler alır. Etiketler temel denetim mantığı için kullanılır. Şablonlar, HTML, XML, CSV ve düz metin de dahil olmak üzere 55

herhangi bir metne dayalı biçimi oluşturmak için kullanılabilir. Gerçekleştirilecek ilk adım, şablonların bulunduğu yeri tanımlamaktır. Karmaşıklıktan kaçınmak için, djproject altında bir templates (şablonlar) dizini oluşturun ve bunun yolunu TEMP- LATE_DIRS settings.py girişine ekleyin: Liste 14. settings.py de bir templates dizininin oluşturulması TEMPLATE_DIRS = ( /path/to/ ab08/templates/,) Django şablonları, site tasarımcılarının, içeriği her bir şablonda yinelemeksizin birörnek bir görünüm yaratmalarını sağlayan template inheritance kavramını destekler. Bu kavramı, blok etiketli bir iskelet ya da temel belge tanımlayarak kullanabilirsiniz. Bu blok etiketleri, içerikli sayfa şablonları tarafından doldurulur. Liste 15. İskelet belge, templates/base.html <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/ TR/xhtml1/DTD/xhtml1- transitional.dtd > <html xmlns= http:// w w w. w 3. o r g / 1 9 9 9 / x h t m l xml:lang= en lang= en > <head> <title>akademik Bilişim Konferansı: {% block title %} Page{% endblock %}</title> {% block extrahead %}{% endblock %} </head> <body> {% block content %}{% endblock %} </body> </html> Şimdi, görünümler tarafından yüklenecek ve oluşturulacak sayfa şablonunu yaratın. Bildiriler/list.html şablonu list sayesinde basitçe yinelenir, index (dizin) görünümü sayesinde içeriğe ulaşır ve her bir kaydın ayrıntı sayfasına bir bağlantı içerir. Liste 16. templates/bildiriler/list.html şablonu {% extends base.html %} {% block extrahead %} <style> body { font-style: arial;} h1 { tex{% extends base. html %} {% block extrahead %} <style> body { font-style: arial;} h1 { text-align: center;}.bildiri.title { font-size: 120%; font-weight: bold;}.bildiri.posted { font-style: italic;} </style> {% endblock %}t-align: center; }.bildiri.title { font-size: 120%; font-weight: bold;}.bildiri.posted { font-style: italic;} </style> {% endblock %} 56

Akademik Bilişim 2008 Django şablon dili, sınırlı işlevsel yetenekler içerecek şekilde tasarlanmıştır. Bu sınırlandırma, şablonların programcı olmayan kişiler için kolay anlaşılır olmasını ve programcılar için de iş mantığını ait olmadığı bir yer olan sunu düzeyine yerleştirmemelerini sağlar. 8. Kaynakça Django Book Django Project Documentation Django Wiki 57