27 Mart 2015 Cuma

Django FlatPages Kullanımı

flatpages Django'nun kendisi ile birlikte gelen dinamik sayfalar oluşturulmasını sağlayan bir uygulamadır. Bu yazımızda nasıl kullanıldığından bahsedeceğiz. Bunun için ilk önce uygulamayı projemize dahil etmemiz gerekiyor.
INSTALLED_APPS = (
    ....
    'django.contrib.sites',
    'django.contrib.flatpages',
)
Burada dikkat etmeniz gereken flatpages uygulaması sites uygulamasını kullandığı için sites uygulamasının da projeye dahil edilmiş olması gerekmektedir. Dikkat edilmesi gereken bir diğer nokta ise sites uygulaması için şu satırı settings.py dosyasını eklememiz gerektiğidir.
SITE_ID = 1
Bu işlemden sonra MIDDLEWARE_CLASSES'a şu satırı ekliyoruz.
MIDDLEWARE_CLASSES = (
     ....
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
Url yapılandırmamızı yapalım.
urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^pages/', include('django.contrib.flatpages.urls')),
)
flatpages uygulamasının url dosyasını içe aktarmış olduk. Bundan sonra yapmamız veritabanı oluşturarak admin panelinden bir sayfa oluşturmak.
python manage.py syncdb
Artık dinamik bir sayfa oluşturmaya hazırız. Admin panelini açtığınız zaman Flat pages alanını göreceksiniz. Tıklayarak yeni birtane oluşturalım. Oluşturduğumuz url'e /pages/lorem-ipsum/ diye gitmeye çalışırsak flatepages/default.html bulunmadı gibi bir hata alırız. Bunun için templates dizini altında flatepages/default.html oluşturuyoruz. Ve içerisine şunları yazıyoruz.
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>{{ flatpage.title }}</title>
</head>
<body>
{{ flatpage.content }}
</body>
</html>
Şimdi tekrardan http://localhost:8000/pages/lorem-ipsum/ adresine gitmeye çalışırsanız sayfanın açıldığını göreceksiniz. Sayfayı oluştururken template name alanını boş bıraktığımız flatepages/default.html şablonunu aramaktadır.
Bir başka kullanım yöntemi ise şu şekildedir. Url tanımlamasını şu şekilde yapabilmekteyiz.
urlpatterns = patterns('',
    ...
    url(r'/lorem-ipsum/$', 'django.contrib.flatpages.views.flatpage', kwargs={'url': '/lorem-ipsum/'}, name='lorem_ipsum'),
)
Daha önceki url tanımlamasını silerseniz. Bu url tanımlamasından sonra http://localhost:8000/lorem-ipsum/ adresi ile tarayıcıdan yine ulaşabilirsiniz. Admin panelinden Flat Plage girerken Advanced Options kısmındaki Template Name alanına eğer herhangi bir isim girerseniz artık bu sayfa girdiğiniz şablona yönlendirilecektir.
Url tanımlasını şu şekilde de yapabiliriz.
urlpatterns += patterns('django.contrib.flatpages.views',
    (r'^pages/(?P<url>.*/)$', 'flatpage'),
)
Aşağıdaki html çıktısı ile, flatpages sayfalarını listeleyebilirsiniz.
{% load flatpages %}
{% get_flatpages as flatpages %}
<ul>
    {% for page in flatpages %}
        <li><a href="{{ page.url }}">{{ page.title }}</a></li>
    {% endfor %}
</ul>
Kaynakça

2 yorum :