Register Now

Login


Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Add question

You must login to ask question .

Login


Register Now

Merhaba, kayıt formu üzerinden kayıt olabilirsiniz. Fakat sosyal medya ile kayıt olmanızı önermekteyiz.

Django Rest Framework – Sınıf Tabanlı Görünümler

Django Rest Framework – Sınıf Tabanlı Görünümler

 

DRYDon’t Repeat Yourself = Kendini Tekrarlama!

DRY prensibine göre programcının kodlama esnasında kod tekrarlarından (code duplication) sakınması gerekmektedir. Kodun kendini tekrarlaması (örneğin copy-paste metodu kullanılarak) yazılım sisteminin genelde bakımını ve geliştirilmesini zorlaştırır. Bunun önüne geçmek için azimle DRY prensibinin uygulanması gerekmektedir. Sınıf tabanlı görünümler(Class based views), DRY kuralını engellemek için oluşturulmuştur.

Önceki makalede, Fonksiyonel yöntemi kullanarak views(görünüm) tarafını oluşturduk. Bir önceki makaleyi okuyup, buraya giriş yaparsanız daha faydalı olabilir.

Haydi başlayalım …

APIView Kullanarak ;

Apiviews metodu ile, metodları parçalayarak işlem yapmaya yarar. Diğerlerine nazaran daha okunaklı ve daha kolay gelmektedir.

  • SnippetList fonksiyonu ile, modeldeki veriler listelenecek. Ayrıca post metodu ile veriler eklenmeye izin verilecektir.

Yukarıdaki, views.py’ın devamıdır. Altına ekleyin.

  • Get,put,delete metodları parçalayarak ayrı ayrı işlem yapmaya imkan verdi. Bu sayede, daha okunaklı ve mantıklı bir görünüş oluyor.

Rotaları belirliyelim;

http://127.0.0.1:8000/snippets/ girdiğimizde ;

Örneğin id:2 olan veriyi listelemek istediğimizde : http://127.0.0.1:8000/snippets/2/

Ek olarak, alttaki form bölümünden “post” metodu ile kayıt’da yapabilirsiniz.

Şimdi, aynı işlemleri yapmak için farklı sınıf görünüm yöntemlerini kullanacağız. Yani amac, en yukarıda bahsettiğimiz için DRY kuralını kırmak ve az kodla amaca ulaşmaktadır.

Mixineleri Kullanarak;

Mixinleri kullanmak, çok az kodla iş yapamıza yarıyacaktır. Kodları görerek, yorumlıyalım.

  • Miras olarak, mixinsleri çağırıp istenen olayları belirliyoruz.
  • Kullanıcak model ve serializer belirliyoruz.
  • Sonrası, kebab metodları yazdıktan sonra bitti 🙂

Kendimizi Artık daha az tekrar etmiş olduk 🙂

SnippetDetail‘de mixins ile oluşturalım. Yine aynı şekil, yukarıdaki views.py’ın devamıdır.

Rotalar mixins’de değişmedi, yukarıdaki urls.py ile aynıdır.

Generic kullanarak;

Genericleri bazı kısım yazılımcılar çok çok sever, bazıları ise sevmez. Çünkü gerçekten çok çok az kodla istenen olay oluşmaktadır. Neredeyse kod bilgisine gerek kalmıyor.

Yukarıdaki bütün işlemlerin aynısı generic ile şöyle yapiyoruz ;

  • Mixins gibi, istenen olay miras olarak verilmektedir.
  • queryset ile modeli belirlenir.
  • seralizer_class ice serializer belirlenir.
  • işlem biter 🙂

Hangi kullanım, hoşuna gidiyorsa onu tercih edebilirsiniz. Kendi açımdam cevaplarsam, ApiViews ile kodlamak daha zevkli olabilir ama, hız ve zaman kazanmak için generic biçilmiş kaftan!

Yaşasın generic!

 

About Ali YamanProfesyonel

Herzaman bilginin gücüne inanlardan oldum , araştirmalarım ve deneyimlerimlerimi sizlere sunmayı amaçlıyorum. İstanbul Üniversitesi Kontrol ve Otomasyon Öğrencisiyim Elektronik ve Programlama ile ilgim var.

Follow Me

Leave a reply

Captcha Click on image to update the captcha .