11 Haziran 2014 Çarşamba

Kullanıcılar


Merhaba arkadaşlar,

Bu gün sizlere Django'da kullanıcıları anlatacağım. Geçen haftalarda oturumları öğrenmiştik. Oturumları tarayıcıdan gelen birden fazla isteğe yol tayin etmede kullanıyorduk. Kullanıcıları denetlerken ise oturumları kullanacağız. Yani sisteme giriş yapan kullanıcıyı ya da kendisinin kullanıcı olduğunu iddaa eden sahte kullanıcıları, oturumları kullanarak doğrulama yoluna gideriz. Bu yüzden Django bize bunları denetlerken yardımcı olması için bazı araçlar(tools) sağlar. Buna Django'nun kimlik doğrulama ve yetkilendirme sistemi de diyebiliriz. Django kimlik doğrulama ve yetkilendirme sistemi ; kullanıcı hesaplarını, grupları, izinleri ve çerez tabanlı kullanıcı oturumlarını yönetmemizde bize yardımcı olur. Sistemin isminden de anlaşılacağı üzere iki aşamalı bir sistemden bahsediyoruz (doğrulama-yetkilendirme).

8 Haziran 2014 Pazar

Django'da Oturumlar (Sessions)


          Django; oturumları (session), çerezleri kullanarak sağlar.  İstemcinin sunucuya ilk bağlanmasında 32 bit uzunluğunda onaltılık sayı sistemde rastgele üretilmiş bir sayı oluşturulur, sessionid (örn: ac514a03cbd1f2343c22ed3bd2ba8y76.  Bu sessionid daha sonra yapılacak her bağlanmada istemciden sunucuya gönderilir. Django oturum bilgilerini bu sessionid 'yi anahtar kabul eden bir sözlükte tutar ve veritabanındaki django_session isimli tabloya kaydeder. Kullanıcı artık her bağlantı yaptığında çerez bilgileri ile veritabanındaki veriler kıyaslanır. Ayrıca oturum bilgileri sözlük gibi davranan request.session nesnesinde saklanır. Tabiki tüm bunlar otomatik olarak Django tarafından yapılır. Bize sadece oturum bilgilerini kullanarak işlemlerimizi yapmak kalır. Örnek vermek gerekirse :

30 Mayıs 2014 Cuma

Django'da Çerez Kullanımı


       Bilgisayar terimi olarak çerez ; kullanılan web sayfaların sunucularının, kullanıcı bilgisayarının hard diskine yerleştirdiği ufak bir text dosyasıdır. Yani, çerez; web sitesinin bir sonraki ziyarette kullanıcıyı tanıması için geçerli bilgidir. Bu text dosyası bir komut dosyası olmadığı gibi, virüs de değildir. Kullanıcıya özel bir tanımlamadır ve sadece çerezi tanımlayan web sunucusu tarafından okunabilir.


23 Mayıs 2014 Cuma

Modellerden Form Oluşturma


      Django'da bir veritabanına dayalı bir uygulama geliştirildiğinde Django modellerini ve bu modellere biçim olarak  yakın olan formları kullanırız. Örneğin, daha önce oluşturduğumuz okul projesinde öğretim görevlilerine ait modelimiz aşağıdaki gibiydi :

...
class OgretimElemani(models.Model):
    UNVAN_SECENEKLERI=(('AG', u'Araştırma Görevlisi'),
                       ('DR', u'Doktor'),
                       ('YD', u'Yardımcı Doçent Doktor'),
                       ('DD', u'Doçent Doktor'),
                       ('PD', u'Profesör Doktor'),
                       )
    unvani = models.CharField(max_length = 2, choices= UNVAN_SECENEKLERI,
                              blank=True , verbose_name='Unvanı')
    adi = models.CharField(max_length =50, verbose_name='Adı')
    soyadi = models.CharField(max_length =50,verbose_name='Soyadı')
    telefonu = models.CharField(max_length =10,blank=True,
                                verbose_name='Telefon Numarası')
    e_posta_adresi = models.EmailField(blank = True,verbose_name='E-Posta Adresi')

    def __unicode__(self):
        return u'%s, %s' %(self.soyadi,self.adi)
    class Meta:
        ordering =['soyadi']

...


Daha sonra bu modelde tanımlı alan türlerini formumuzda tekrar tekrar yazıyorduk.

15 Mayıs 2014 Perşembe

Django'da Arama Formu Oluşturma

       Arama formları, verinin çok kabardığı durumlarda kullanıcıların istenilen veriye daha kısa yoldan ulaşması için tasarlanan formlardır. Hepimizin kullandığı arama motorlarını buna örnek olarak verebiliriz. 

       Bu gün burada, kendi yaptığımız bir uygulamaya arama formu nasıl eklenir sorusuna cevap vermek istiyorum. Geçen haftalarda üzerinde çalıştığımız okul projesinde öğretim elemanlarımıza ait bir listemiz vardı, bu liste biz her yeni bir öğretim görevlisi eklediğimizde büyüyecektir ve veri kümemiz büyüdükçe aradığımızı bulmamız daha güç hal alacaktır. Şimdi öğretim elemanları listemize bir arama formu ekleyelim. 

      Arama formunu oluşturmak için  ...\okul\yonetim\forms.py dosyasına arama formumuzu aşağıdaki gibi ekleyelim :

forms.py
...

class AramaFormu(forms.Form):

    aranacak_kelime = forms.CharField()

    def clean_aranacak_kelime(self):
        kelime = self.cleaned_data['aranacak_kelime']
        if len(kelime) < 3:
            raise forms.ValidationError('Aranacak kelime 3 harften az olamaz !..')
        return kelime


26 Nisan 2014 Cumartesi

Django'da Sayfalama (Pagination)


Merhaba Arkadaşlar,

Bu hafta sizlere Django'da sayfalama (pagination) hakkında bilgi vermek istiyorum. Bildiğiniz üzere web sitelerinde sayfalama genel olarak içeriğin uzun olduğu durumlarda kullanıcıya daha kullanabilir sayfalar üretmek için içeriğin belli mantıksal kısımlara ayrılmasıdır. Genelde arama sonuç sayfalarında, günlük(blog) sitelerinde, uzun içeriğe sahip makalelerde uygulamalarına rastlarız.


Sayfalama alanları genel olarak sitede gezinme alanlarının (navigation) bir parçasıdır. Sitedeki kullanılabilirliği ve düzeni sağlayan normal menü yapılarının dışındaki yapılardır. Sayfalama yaparken aşırıya kaçıp görünüşü çok hoş olsun diye kullanıcıyı zora sokan tasarımlardan kaçınmak gerekir. Sayfalamada önemli olan kullanıcı dostu ve işlevsel bir yapı oluşturmaktır, ondan sonra görsellik gelir. Elbette işlevselliği kaybetmeden görsellikde geliştirilebilir. 
Google sayfalama

Yandex sayfalama


20 Nisan 2014 Pazar

Django Bootstrap

Merhaba Arkadaşlar,

Bu hafta sizlere Django Bootstrap hakkında bilgi vermek istiyorum.
Bootstrap için; daha hızlı ve daha kolay kullanımıyla, şık, sezgisel ve güçlü bir mobil web geliştirme çatısı diyebiliriz. Bildiğiniz gibi web tasarımı zevkli bir iş olmasına karşın çok vakit alan bir iştir. Ayrıca vaktin yeterli olmadığı zamanlarda tam bir işkence haline dönüştüğü de olabiliyor. İşte tam burada Bootstrap devreye giriyor. "Kullanımı kolay, sonucu güzel olsun." diyen biz yazılımcılara hitap eden güzel bir kütüphane.

Şimdi Bootstrap'i kuralım. Tabi bundan önce bilgisayarımızda pip'ın kurulu olması gerekiyor.