Django 1.3
sürümünden itibaren Class Based Views (Sınıf Tabanlı görünüm) konsepti gündeme
geldi. Bu şekilde view fonksiyonlarının
yerini python objeleri alır.
Specific HTTP metodları ayrı methodlarla belirlenebilir, nesne tabanlıteknikleri (mixins) gibi daha çok kullanılabilir.
Specific HTTP metodları ayrı methodlarla belirlenebilir, nesne tabanlıteknikleri (mixins) gibi daha çok kullanılabilir.
Önce
Python’da fonksiyon ve method farkını bir örnekle görelim:
Django'da bir HTTP GET için , bir view (görünüm) fonksiyonu şu şekilde:
Bir CBV’de, get ve post methodunun argumanları, self , request (HttpRequest) ve URLconf’da belirlediğiniz request argumanıdır:
class PrintMe(object): def __init__(self, astring): self.l = astring def print_me(self): print(self.l)Metodu çalıştıralım:
p = PrintMe("po") p.print_me()Fonksiyon:
def print_me(l): print lFonksiyonu çalıştıralım:
print_me("po")Ve çıktılar:

Django'da bir HTTP GET için , bir view (görünüm) fonksiyonu şu şekilde:
from django.http import HttpResponse def any_view(request): if request.method == 'GET': # kodlarınız return HttpResponse('any responce')CBV’de (Class Based Views) ise :
from django.views.generic import View class AnyView(View): def get(self, request): # kodlarınız return HttpResponse('any responce')urls.py’da :
from django.conf.urls import patterns from anyapp.views import AnyView urlpatterns = patterns('', (r'^any/', AnyView.as_view()), )CBV’de, get ve post methodları:
Bir CBV’de, get ve post methodunun argumanları, self , request (HttpRequest) ve URLconf’da belirlediğiniz request argumanıdır:
from django.views.generic import View class ViewClass(View): def get(self, request, arg1, keyword=value): return method1() def post(self, request, arg1, keyword=value): return method2()
Kaynakça:
https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/
http://lgiordani.github.io/blog/2013/10/28/digging-up-django-class-based-views-1/
http://programmer.97things.oreilly.com/wiki/index.php/Don't_Repeat_Yourself
https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/
http://lgiordani.github.io/blog/2013/10/28/digging-up-django-class-based-views-1/
http://programmer.97things.oreilly.com/wiki/index.php/Don't_Repeat_Yourself
Güzel yazı teşekkürler devamını bekliyoruz :)
YanıtlayınSilEmeği geçenlerden Allah razı olsun...
YanıtlayınSil