Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
New: Configurable Applications
New: Configurable Applications -
Django sunucusu olarak dotcloud
Son zamanlarda bilişim çevrelerinde sık sık duyabileceğiniz "cloud computing" teriminin henüz oturmuş bir sözlük anlamı yok. En sık kullanılan anlamında "cloud computing" bir bilgisayarın kaynaklarının çoğunlukla sanallaştırma yazılımlarıyla birlikte, birden fazla kişi tarafından bölüşülmesi demek. Bu hizmeti sağlayan "dotcloud" firmasının, django uygulamalarını destekleyen bir altyapısı var ve belirli sınırlamalar çerçevesinde bu hizmeti ücretsiz alabiliyorsunuz.Dotcloud'u kullanarak, sağladığı hizmetlerden bir veya birkaçı'nı seçerek, Dotcloud sunucularında bir sanal makina oluşturabiliyoruz. Sağladığı hizmetlerin çerçevesi mysql, postgresql gibi sık kullanılan veritabanı sistemlerini, Python gibi programlama dillerini içine alıyor. Bu yazıyı yazdığım tarihte, 13 adet servis kullanılabiliyordu. Bu servisler ile codeigniter, django, phpbb, wordpress,mediawiki gibi yazılımların çalıştırabilmesi mümkün görünüyor. Dotcloud galerisinde de Dotcloud ile sunulan birkaç örnek sitenin linklerine ve bu sitelerin hangi hizmetlere birlikte sunulduğu bilgisine ulaşabilirsiniz. Dotcloud'un ücretlendirme politikası, sanal makine başına kullandığınız servis sayısı, kendinize özgü bir domain adı isteyip istemediğiniz gibi birkaç değişkene bağlı olarak değişiyor. Örneğin, bu blog'un sunumunu Dotcloud ile ücretsiz olarak yapıyorum. Saniyede 1000'den fazla istemin yapıldığı çok büyük bir kullanıcı kitlesine sahip, ya da ona benzer bir siteniz yoksa, Dotcloud'un ücretsiz sağladığı hizmetin bir django projesi sunmak için yeterli olacağını düşünüyorum. Dotcloud'u kullanabilmek için yapmanız gereken ilk iş, tahmin edebileceğiniz gibi, Dotcloud web sayfasını ziyaret edip, üye kaydı … -
Django sunucusu olarak dotcloud
Son zamanlarda bilişim çevrelerinde sık sık duyabileceğiniz "cloud computing" teriminin henüz oturmuş bir sözlük anlamı yok. En sık kullanılan anlamında "cloud computing" bir bilgisayarın kaynaklarının çoğunlukla sanallaştırma yazılımlarıyla birlikte, birden fazla kişi tarafından bölüşülmesi demek. Bu hizmeti sağlayan "dotcloud" firmasının, django uygulamalarını destekleyen bir altyapısı var ve belirli sınırlamalar çerçevesinde bu hizmeti ücretsiz alabiliyorsunuz.Dotcloud'u kullanarak, sağladığı hizmetlerden bir veya birkaçı'nı seçerek, Dotcloud sunucularında bir sanal makina oluşturabiliyoruz. Sağladığı hizmetlerin çerçevesi mysql, postgresql gibi sık kullanılan veritabanı sistemlerini, Python gibi programlama dillerini içine alıyor. Bu yazıyı yazdığım tarihte, 13 adet servis kullanılabiliyordu. Bu servisler ile codeigniter, django, phpbb, wordpress,mediawiki gibi yazılımların çalıştırabilmesi mümkün görünüyor. Dotcloud galerisinde de Dotcloud ile sunulan birkaç örnek sitenin linklerine ve bu sitelerin hangi hizmetlere birlikte sunulduğu bilgisine ulaşabilirsiniz. Dotcloud'un ücretlendirme politikası, sanal makine başına kullandığınız servis sayısı, kendinize özgü bir domain adı isteyip istemediğiniz gibi birkaç değişkene bağlı olarak değişiyor. Örneğin, bu blog'un sunumunu Dotcloud ile ücretsiz olarak yapıyorum. Saniyede 1000'den fazla istemin yapıldığı çok büyük bir kullanıcı kitlesine sahip, ya da ona benzer bir siteniz yoksa, Dotcloud'un ücretsiz sağladığı hizmetin bir django projesi sunmak için yeterli olacağını düşünüyorum. Dotcloud'u kullanabilmek için yapmanız gereken ilk iş, tahmin edebileceğiniz gibi, Dotcloud web sayfasını ziyaret edip, üye kaydı … -
Django ile Blog Geliştirme - Rss ve Site Haritası
Site haritaları ve rss beslemeleri bir blogun olmazsa olmazlarındandır. Django'da bunların ikisini de yapmak çok kolay. sitemap ve rss beslemesi yapmak için gerekli sınıflar, django'nun içindeki contrib paketiyle bize sunuluyor.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Bu makale kullandığım örneklerde, halen bu gördüğünüz site için kullandığım kodları kullanacağım. Bu siteyi yazmaya başladığımda birkaç nedenden dolayı ingilizce olarak yazmaya başladığım için, değişken isimleri şimdiye kadar yaptığımız örneklerden farklı olacak. Ancak, gerekli açıklamaları yapacağımdan dolayı, bu örnekleri kendi projenize kolaylıkla uygulayabileceğinizi düşünüyorum. Atladığım bir nokta varsa, aşağıda gördüğünüz yorumlardan beni uyarırsanız sevinirim. Şimdi rss ile ilgili olan kodları görelim: # -*- coding:utf-8 -*- from django.contrib.syndication.views import Feed from django.shortcuts import get_object_or_404 from portal.blog.models import Post, Tag class LatestPosts(Feed): title = "yasar11732: En Son Yazılar" link = "/" description = "Yeni yazilarin güncellemeleri" def items(self): return Post.objects.filter(yayinlandi=True).order_by("-pub_date")[:5] def item_title(self,item): return item.title def item_description(self,item): return item.abstract def item_pubdate(self,item): return item.pub_date class TagFeed(Feed): def get_object(self,request,tag): return get_object_or_404(Tag, text=tag) def title(self,obj): return "yasar11732: %s ile ilgili makaleler" % obj.text def item_description(self,obj): return obj.abstract def link(self,obj): return "/tag/%s/" % obj.text def description(self, obj): return "%s ile ilgili tum yazilar" % obj.text def items(self,obj): return obj.post_set.filter(yayinlandi=True).order_by("-pub_date")[:15] def item_pubdate(self,item): return item.pub_date Bu modül, uygulamızın içerisinde … -
Django ile Blog Geliştirme - Rss ve Site Haritası
Site haritaları ve rss beslemeleri bir blogun olmazsa olmazlarındandır. Django'da bunların ikisini de yapmak çok kolay. sitemap ve rss beslemesi yapmak için gerekli sınıflar, django'nun içindeki contrib paketiyle bize sunuluyor.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Bu makale kullandığım örneklerde, halen bu gördüğünüz site için kullandığım kodları kullanacağım. Bu siteyi yazmaya başladığımda birkaç nedenden dolayı ingilizce olarak yazmaya başladığım için, değişken isimleri şimdiye kadar yaptığımız örneklerden farklı olacak. Ancak, gerekli açıklamaları yapacağımdan dolayı, bu örnekleri kendi projenize kolaylıkla uygulayabileceğinizi düşünüyorum. Atladığım bir nokta varsa, aşağıda gördüğünüz yorumlardan beni uyarırsanız sevinirim. Şimdi rss ile ilgili olan kodları görelim: # -*- coding:utf-8 -*- from django.contrib.syndication.views import Feed from django.shortcuts import get_object_or_404 from portal.blog.models import Post, Tag class LatestPosts(Feed): title = "yasar11732: En Son Yazılar" link = "/" description = "Yeni yazilarin güncellemeleri" def items(self): return Post.objects.filter(yayinlandi=True).order_by("-pub_date")[:5] def item_title(self,item): return item.title def item_description(self,item): return item.abstract def item_pubdate(self,item): return item.pub_date class TagFeed(Feed): def get_object(self,request,tag): return get_object_or_404(Tag, text=tag) def title(self,obj): return "yasar11732: %s ile ilgili makaleler" % obj.text def item_description(self,obj): return obj.abstract def link(self,obj): return "/tag/%s/" % obj.text def description(self, obj): return "%s ile ilgili tum yazilar" % obj.text def items(self,obj): return obj.post_set.filter(yayinlandi=True).order_by("-pub_date")[:15] def item_pubdate(self,item): return item.pub_date Bu modül, uygulamızın içerisinde … -
Per User Class Based Views
One of the features to come with Django 1.3 was official support for Class Based Views. Since it's released I've been starting to use Class Based Views more and more. Now i'm at a point where nearly all of the views I write are Class Based. One of the things that I love about Class Based Views is that you can easily extend them to modify functionality. A common thing to do with a view is to limit access to logged in users, and to only allow a user to view their own objects. Luckily Class Based Views make restricting a user to only seeing their objects pretty simple. Read More -
Beware of Python optimization
Public Service Announcement! The "Python optimization", as in "-O" flag or "WSGIPythonOptimize" option not only doesn't do what you expect, but can ruin your program. -
New: Version Reporting
New: Version Reporting -
Junior Django Developer Wanted
Caktus is currently seeking a junior Django developer for our team. The ideal candidate would have 6 months of experience of building dynamic web applications in any language, at least 3 months of experience using Python and Django, and also have a basic understanding of relational databases such as PostgreSQL and MySQL. The junior developer ... -
Django ile Blog Geliştirme - Şablonlar
Blog uygulamamızı bıraktığımızda uygulamamız tarayıcıya basit yanıtlar gönderebiliyordu. Bu yazımızda, Django'nun şablon sistemini kullanarak, uygulamalarımızı son kullanıcıya daha zarif bir şekilde sunmanın yollarından bahsedeceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'da şablon oluşturma işlemi, içeriğinin belirli kısımları Django tarafından doldurulacak şekilde bir belge oluşturmaktan ibarettir. Çoğu zaman bu sistem HTML sayfaları üretmek için kullanılsa da, Django'nun şablon sistemiyle javascript, css, xml belgeri gibi her türlü belgeyi betimleyip tarayıcıya gönderebilirsiniz. Hazırladığımız şablonların Django tarafından bulunabilmesi için, settings modülü içerisindeki TEMPLATE_LOADERS listesinde bulunan şablon bulucu python sınıfları kullanılır. Yeni başlanan bir proje yapılandırmasında, iki adet şablon bulucu sınıf aktif olarak gelir. Bunlardan birtanesi django.template.loaders.filesystem.Loader'dir. Django'nun şablon sisteminin bir parçası olan bu sınıf, şablonlarınızın yerini belirlemek için, yine settings modülü içerisinde belirttiğiniz TEMPLATE_DIRS listesindeki dosya yollarında şablonlarınızı bulmaya çalışır. Django'yla birlikte gelen ve öntanımlı olarak ayarların içerisinde belirtilen diğer bir şablon bulucu ise django.template.loaders.app_directories.Loader'dir. Bu sınıfın görevi ise, INSTALLED_APPS listesinde belirttiğiniz uygulamaların içerisindeki templates ismindeki dizinlerden aradığınız şablonları bulmaktır. Django'da geliştirdiğiniz uygulamaların yeniden kullanılabilir olması adına, uygulamaların kendi şablonlarını kendi içlerinde barındırması gerekir. Böylece, başka bir proje içine kopyalandıklarında, yeni projede yeniden şablon geliştirilmek zorunda kalınmaz. Bunu yapmak için, geliştirdiğimiz proje içerisinde, templates adında bir dizin oluşturup, içerisinde blog_anasayfa.html … -
Django ile Blog Geliştirme - Şablonlar
Blog uygulamamızı bıraktığımızda uygulamamız tarayıcıya basit yanıtlar gönderebiliyordu. Bu yazımızda, Django'nun şablon sistemini kullanarak, uygulamalarımızı son kullanıcıya daha zarif bir şekilde sunmanın yollarından bahsedeceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'da şablon oluşturma işlemi, içeriğinin belirli kısımları Django tarafından doldurulacak şekilde bir belge oluşturmaktan ibarettir. Çoğu zaman bu sistem HTML sayfaları üretmek için kullanılsa da, Django'nun şablon sistemiyle javascript, css, xml belgeri gibi her türlü belgeyi betimleyip tarayıcıya gönderebilirsiniz. Hazırladığımız şablonların Django tarafından bulunabilmesi için, settings modülü içerisindeki TEMPLATE_LOADERS listesinde bulunan şablon bulucu python sınıfları kullanılır. Yeni başlanan bir proje yapılandırmasında, iki adet şablon bulucu sınıf aktif olarak gelir. Bunlardan birtanesi django.template.loaders.filesystem.Loader'dir. Django'nun şablon sisteminin bir parçası olan bu sınıf, şablonlarınızın yerini belirlemek için, yine settings modülü içerisinde belirttiğiniz TEMPLATE_DIRS listesindeki dosya yollarında şablonlarınızı bulmaya çalışır. Django'yla birlikte gelen ve öntanımlı olarak ayarların içerisinde belirtilen diğer bir şablon bulucu ise django.template.loaders.app_directories.Loader'dir. Bu sınıfın görevi ise, INSTALLED_APPS listesinde belirttiğiniz uygulamaların içerisindeki templates ismindeki dizinlerden aradığınız şablonları bulmaktır. Django'da geliştirdiğiniz uygulamaların yeniden kullanılabilir olması adına, uygulamaların kendi şablonlarını kendi içlerinde barındırması gerekir. Böylece, başka bir proje içine kopyalandıklarında, yeni projede yeniden şablon geliştirilmek zorunda kalınmaz. Bunu yapmak için, geliştirdiğimiz proje içerisinde, templates adında bir dizin oluşturup, içerisinde blog_anasayfa.html … -
Don’t use string literals for sender values in Django’s signal dispatcher
TL; DR Don’t use a string literal as the value of the sender attribute when defining your own Django signals. I got bit by a nasty bug today using Django’s signal framework. I used the signal … More→ -
Django'da Url Taşıma
Bu yazıda, eski ziyaretçileri ve arama motorlarını küstürmeden, django'da nasıl url taşıyacağımıza değineceğiz.Örneğin, bir bloğunuz var (evet, örnek pek yaratıcı değil...) ve makale/14 (id'si 14 olan makalenin url'i) gibi urlleri topluca, yazi/14 gibi url'lere taşımak istiyorsunuz. Bunu Django'nun generic view'leri ile kolaylıkla yapabiliriz. Örneğin: from django.conf.urls.defaults import patterns urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$','blog.views.makale'), ) Şimdi de urlleri taşıdığımız haline bakalım: from django.conf.urls.defaults import patterns from django.views.generic.simple import redirect_to urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$',redirect_to,{'url': 'yazi/%(id)s/'}), (r'^yazi/(?P<id>\d+)/$','blog.views.makale') Bu çok basit bir örnekti. Eski bağlantımıza gelen kullanıcıları, yeni bağlantımıza yönlendirdik. Burada %(id)s kısmı, django'nun bizim için yaptığı sözlük biçiminde dizgi formatlaması (eng: dictionary-style string formatting). Böylece bize gelen url'deki id değerini, aynı şekilde yönlendirdiğimiz url içerisine koyuyoruz. Peki ama, ya sitemizin /makale/<id> olan url'ini makale/<slug> gibi bir url'e yönlerdirmek istiyorsak? Bunu yapabilmek için bir view yazıp, yönlendirmeyi orada yapmalıyız. Bunu herhangi bir modül içerisinde yapabiliriz. Ben uygulamanın kendi views modülü içerinde yapacağım. from django.http import HttpResponsePermanentRedirect from django.shortcuts import get_object_or_404 from blog.models import makale #makale modelinin orada olduğunu varsayıyorum. def makeMeSEO(request,makale_id): mkl = get_object_or_404(makale,pk=makale_id) return HttpResponsePermanentRedirect("/makale/%s/" % mkl.slug) """ Diğer fonksiyonlar burada devam ediyor. """ Burası da urls.py from django.conf.urls.defaults import patterns from django.views.generic.simple import redirect_to urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$','blog.views.makeMESEO'), (r'^makale/(?P<slug>[^/]+)/$),'blog.views.makale') Böylelikle, id'ye dayalı eski … -
Django'da Url Taşıma
Bu yazıda, eski ziyaretçileri ve arama motorlarını küstürmeden, django'da nasıl url taşıyacağımıza değineceğiz.Örneğin, bir bloğunuz var (evet, örnek pek yaratıcı değil...) ve makale/14 (id'si 14 olan makalenin url'i) gibi urlleri topluca, yazi/14 gibi url'lere taşımak istiyorsunuz. Bunu Django'nun generic view'leri ile kolaylıkla yapabiliriz. Örneğin: from django.conf.urls.defaults import patterns urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$','blog.views.makale'), ) Şimdi de urlleri taşıdığımız haline bakalım: from django.conf.urls.defaults import patterns from django.views.generic.simple import redirect_to urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$',redirect_to,{'url': 'yazi/%(id)s/'}), (r'^yazi/(?P<id>\d+)/$','blog.views.makale') Bu çok basit bir örnekti. Eski bağlantımıza gelen kullanıcıları, yeni bağlantımıza yönlendirdik. Burada %(id)s kısmı, django'nun bizim için yaptığı sözlük biçiminde dizgi formatlaması (eng: dictionary-style string formatting). Böylece bize gelen url'deki id değerini, aynı şekilde yönlendirdiğimiz url içerisine koyuyoruz. Peki ama, ya sitemizin /makale/<id> olan url'ini makale/<slug> gibi bir url'e yönlerdirmek istiyorsak? Bunu yapabilmek için bir view yazıp, yönlendirmeyi orada yapmalıyız. Bunu herhangi bir modül içerisinde yapabiliriz. Ben uygulamanın kendi views modülü içerinde yapacağım. from django.http import HttpResponsePermanentRedirect from django.shortcuts import get_object_or_404 from blog.models import makale #makale modelinin orada olduğunu varsayıyorum. def makeMeSEO(request,makale_id): mkl = get_object_or_404(makale,pk=makale_id) return HttpResponsePermanentRedirect("/makale/%s/" % mkl.slug) """ Diğer fonksiyonlar burada devam ediyor. """ Burası da urls.py from django.conf.urls.defaults import patterns from django.views.generic.simple import redirect_to urlpatterns = patterns('', (r'^makale/(?P<id>\d+)/$','blog.views.makeMESEO'), (r'^makale/(?P<slug>[^/]+)/$),'blog.views.makale') Böylelikle, id'ye dayalı eski … -
New: My Development Assumptions and Principles
New: My Development Assumptions and Principles -
New: My Development Assumptions and Principles
New: Since I started developing in Django in 2006, I've been lucky enough to meet and work with many talented people with a variety of experiences. Gradually, typically through failure or dire need, we developed a methodology and approach to development of projects. -
Django ile Blog Geliştirme - Url ve Görünüm
Geçtiğimiz derslerde, Django ile oluşturduğumuz proje içerisinde bir blog uygulamasına başlamış ve uygulamamızın modellerini yazmıştık. Bu dersimizde ise, blog uygulamamızın url yapılandırmasını yapacak ve tarayıcıya bazı statik ve dinamik yazılar göndereceğiz. Django'nun şablon sistemine ise bir sonraki dersimizde değineceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'nun url yapılandırması, herhangi bir python modülü içerisinde yapılabilir. Bununla birlikte, url yapılandırması yaptığımız modülün içerisine diğer uygulamaların da url yapılandırmasını dahil edebiliriz. Django projeleri geliştirirken tavsiye edilen yöntem, her uygulamanın kendi url yapılandırmasını yapması, ve bu yapılandırmaların kök dizindeki urls modülüne dahil edilmesidir. Böylece django uygulamalarının ayrıştırılması sağlanmış olur. Bu ayrıştırma sayesinde bir projede geliştirdiğimiz uygulamayı, istersek kolaylıkla dağıtabilir, istersek diğer projelerimize dahil edebiliriz. Yeni başladığımız projemizin kök dizininde bulunan urls modülünün sıradan bir python modülünden bir farkı yoktur. Sadece, urlpatterns isminde bir patterns objesi tanımlaması gerekir. Bunun için öncelikle, django.conf.urls.defaults içerisinde bulunan patterns'ı bu modüle dahil etmemiz gerekir. Yeni oluşturulan projemizde bu işlem django tarafından yapılmıştır. Bununla birlikte örnek bir urlpatterns objesi de tanımlanmıştır. Geçen dersimizde django'nun içerisinde gelen admin uygulamasında tanımlanan url'leri, buraya dahil etmiştik. Şimdi de blog projemize ait url yapılandırmasını buraya ekleyelim. from django.conf.urls.defaults import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', … -
Django ile Blog Geliştirme - Url ve Görünüm
Geçtiğimiz derslerde, Django ile oluşturduğumuz proje içerisinde bir blog uygulamasına başlamış ve uygulamamızın modellerini yazmıştık. Bu dersimizde ise, blog uygulamamızın url yapılandırmasını yapacak ve tarayıcıya bazı statik ve dinamik yazılar göndereceğiz. Django'nun şablon sistemine ise bir sonraki dersimizde değineceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'nun url yapılandırması, herhangi bir python modülü içerisinde yapılabilir. Bununla birlikte, url yapılandırması yaptığımız modülün içerisine diğer uygulamaların da url yapılandırmasını dahil edebiliriz. Django projeleri geliştirirken tavsiye edilen yöntem, her uygulamanın kendi url yapılandırmasını yapması, ve bu yapılandırmaların kök dizindeki urls modülüne dahil edilmesidir. Böylece django uygulamalarının ayrıştırılması sağlanmış olur. Bu ayrıştırma sayesinde bir projede geliştirdiğimiz uygulamayı, istersek kolaylıkla dağıtabilir, istersek diğer projelerimize dahil edebiliriz. Yeni başladığımız projemizin kök dizininde bulunan urls modülünün sıradan bir python modülünden bir farkı yoktur. Sadece, urlpatterns isminde bir patterns objesi tanımlaması gerekir. Bunun için öncelikle, django.conf.urls.defaults içerisinde bulunan patterns'ı bu modüle dahil etmemiz gerekir. Yeni oluşturulan projemizde bu işlem django tarafından yapılmıştır. Bununla birlikte örnek bir urlpatterns objesi de tanımlanmıştır. Geçen dersimizde django'nun içerisinde gelen admin uygulamasında tanımlanan url'leri, buraya dahil etmiştik. Şimdi de blog projemize ait url yapılandırmasını buraya ekleyelim. from django.conf.urls.defaults import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', … -
Django'da Abstract Modeller
Django'da abstract modellerin kullanımını merak edenlere yönelik, kısa ve öz bir yazı olacak bu.Django'da birbirine çok benzer modeller oluşturacağınız zaman, bir adet abstract model oluşturup, daha sonra o abstract modeli kullanarak asıl modellerinizi oluşturabilirsiniz. abstract (tr: soyut) modellerin kendileri veritabanında bir tablo oluşturmak için kullanılmazlar, bunun yerine diğer modeller için temel oluştururlar. Bir örnekle inceleyelim: class MotorluArac(models.Model): model = models.CharField(max_length=100) yas = models.PositiveIntegerField() plaka = models.IntegerField() class Meta: abstract = True class Araba(MotorluArac): abs_var_mi = models.BooleanField() Bu örneğimizde, MotorluArac abstract modelini kullanarak oluşturduğumuz Araba modelinin, model, yas, araba ve plaka olarak 4 farklı alanı olacak. MotorluArac abstract modelini kullanarak istediğimiz kadar yeni model üretebiliriz. Deneyimli python programcıları, Araba modelinde Meta sınıfının üstüne yazmadığımız için, bu modelin de bir abstract sınıf olacağını düşünebilirler, ancak Django bu problemi bizim için hallediyor. abstract model kullanarak oluşturduğumuz modellerin kendi Meta sınıflarını oluştururken, isterseniz abstract modelin Meta sınıfından kalıtım alabilirsiniz (eng: inherit, extend) class Araba(MotorluArac): abs_var_mi = models.BooleanField() class Meta(MotorluArac.Meta): db_table = "araba_tablosu" -
Django'da Abstract Modeller
Django'da abstract modellerin kullanımını merak edenlere yönelik, kısa ve öz bir yazı olacak bu.Django'da birbirine çok benzer modeller oluşturacağınız zaman, bir adet abstract model oluşturup, daha sonra o abstract modeli kullanarak asıl modellerinizi oluşturabilirsiniz. abstract (tr: soyut) modellerin kendileri veritabanında bir tablo oluşturmak için kullanılmazlar, bunun yerine diğer modeller için temel oluştururlar. Bir örnekle inceleyelim: class MotorluArac(models.Model): model = models.CharField(max_length=100) yas = models.PositiveIntegerField() plaka = models.IntegerField() class Meta: abstract = True class Araba(MotorluArac): abs_var_mi = models.BooleanField() Bu örneğimizde, MotorluArac abstract modelini kullanarak oluşturduğumuz Araba modelinin, model, yas, araba ve plaka olarak 4 farklı alanı olacak. MotorluArac abstract modelini kullanarak istediğimiz kadar yeni model üretebiliriz. Deneyimli python programcıları, Araba modelinde Meta sınıfının üstüne yazmadığımız için, bu modelin de bir abstract sınıf olacağını düşünebilirler, ancak Django bu problemi bizim için hallediyor. abstract model kullanarak oluşturduğumuz modellerin kendi Meta sınıflarını oluştururken, isterseniz abstract modelin Meta sınıfından kalıtım alabilirsiniz (eng: inherit, extend) class Araba(MotorluArac): abs_var_mi = models.BooleanField() class Meta(MotorluArac.Meta): db_table = "araba_tablosu" -
HTML5 and other Django updates on my sites
I'm not a front-end designer but I wanted to jump on the HTML5 boat a bit. Previously I had XHTML layout based on 960.gs grid. I've decided to changed few things a bit and also change the XHTML to HTML5 by using some new basic tags like "article", "aside", "figure", "footer", as well as roles or schema to mark the breadcrumbs (that as Google says is supported by few search engines, although Google got my breadcrumbs before too). And also as I use Google+ I've added the authorship link, and fb:admins meta tag for Facebook (to see if it will add something to the FB likes or other stuff). The current layout doesn't use CSS3 (yet?) nor newer CSS frameworks. I've sicked to 960.gs for simplicity. The design didn't changed much. Some boxes were reorganised and content model got few extra fields. I've used some inspiration from grey WP theme, and HTML5 tags in action were nicely shown in HTML5 template by jayj.dk. ToDo is to update the django-grappelli to the latest version, as well as add django-ajax-selects for the "related articles" multiple select widget. Will it improve content indexing by search engines or SERP position time will tell. To … -
Django ile Blog Geliştirme - Yönetici Paneli
Yazı dizimizin önceki bölümlerinde django projemizin içerisinde bir uygulama oluşturup, bu uygulamanın modellerini yazmıştık. Bu yazımızda ise, uygulamamızı django'nun yönetici paneline kaydedeceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'nun belki de en güzel özelliklerinden biri bizi yönetici paneli yapmaktan kurtarmasıdır. Django kendi içerisinde bir admin sitesi uygulamasıyla gelir, ve bu uygulamayı kolaylıkla projemize dahil edebiliriz. Eğer halen aktifleştirmediyseniz, settings modülü içerisindeki django.contrib.admin uygulamasını şimdi aktifleştirebilirsiniz. settings modülü içerisindenki INSTALLED_APPS listesinde zaten varsa, django.contrib.admin'in başındaki # işaretini kaldırın, eğer yoksa bunu listeye kendiniz ekleyin. Django'nun yönetici sitesinin bağımlılıkları yeni bir django projesinin içerisinde kendiliğinden sağlanmış olarak gelirler. Ancak, bu bağımlıkları yanlışlıkla sildiğinizi düşünüyorsanız, şunları kontrol edin: Yüklü uygulamalarınız içerisinde şunlar var mı: django.contrib.auth, django.contrib.contenttypes, django.contrib.messages MIDDLEWARE_CLASSES içerisinde MessageMiddleware var mı? TEMPLATE_CONTEXT_PROCESSORS içerisinde django.contrib.messages.context_processors.messages var mı? Eğer bunların hepsi varsa, admin sitesi kullanıma hazır demektir. Eğer admin sitesini yeni aktifleştirdiyseniz, şu komutu vererek veritabanında admin sitesi için gerekli olan tabloları oluşturun: python manage.py syncdb Bu komut eğer daha önce bir yönetici hesabı oluşturmadıysanız, bir yönetici hesabı oluşturmanızı isteyecek. Gerekli bilgileri girerek yönetici hesabınızı oluşturun. Admin sitesi uygulamasını yüklemiş olmamıza rağmen, henüz bu siteye hangi link üzerinden ulaşılacağını django'ya bildirmedik. URL tanımlaması yapması konusuna daha sonra değineceğiz. Şimdilik, proje … -
Django ile Blog Geliştirme - Yönetici Paneli
Yazı dizimizin önceki bölümlerinde django projemizin içerisinde bir uygulama oluşturup, bu uygulamanın modellerini yazmıştık. Bu yazımızda ise, uygulamamızı django'nun yönetici paneline kaydedeceğiz.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'nun belki de en güzel özelliklerinden biri bizi yönetici paneli yapmaktan kurtarmasıdır. Django kendi içerisinde bir admin sitesi uygulamasıyla gelir, ve bu uygulamayı kolaylıkla projemize dahil edebiliriz. Eğer halen aktifleştirmediyseniz, settings modülü içerisindeki django.contrib.admin uygulamasını şimdi aktifleştirebilirsiniz. settings modülü içerisindenki INSTALLED_APPS listesinde zaten varsa, django.contrib.admin'in başındaki # işaretini kaldırın, eğer yoksa bunu listeye kendiniz ekleyin. Django'nun yönetici sitesinin bağımlılıkları yeni bir django projesinin içerisinde kendiliğinden sağlanmış olarak gelirler. Ancak, bu bağımlıkları yanlışlıkla sildiğinizi düşünüyorsanız, şunları kontrol edin: Yüklü uygulamalarınız içerisinde şunlar var mı: django.contrib.auth, django.contrib.contenttypes, django.contrib.messages MIDDLEWARE_CLASSES içerisinde MessageMiddleware var mı? TEMPLATE_CONTEXT_PROCESSORS içerisinde django.contrib.messages.context_processors.messages var mı? Eğer bunların hepsi varsa, admin sitesi kullanıma hazır demektir. Eğer admin sitesini yeni aktifleştirdiyseniz, şu komutu vererek veritabanında admin sitesi için gerekli olan tabloları oluşturun: python manage.py syncdb Bu komut eğer daha önce bir yönetici hesabı oluşturmadıysanız, bir yönetici hesabı oluşturmanızı isteyecek. Gerekli bilgileri girerek yönetici hesabınızı oluşturun. Admin sitesi uygulamasını yüklemiş olmamıza rağmen, henüz bu siteye hangi link üzerinden ulaşılacağını django'ya bildirmedik. URL tanımlaması yapması konusuna daha sonra değineceğiz. Şimdilik, proje … -
Django ile Blog Geliştirme - Modeller
0'dan Blog'a Django yazı dizisinin ikinci bölümünde yazı dizisinin ilk bölümünde başlayıp, basit ayarlarını yaptığımız projemizin içinde blog uygulamasına başlayacağız ve uygulamamızın modellerini yazacağız.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'da yeni bir uygulamaya başlamak için, komut satırından başlamış olduğumuz projenin ana dizininin içindeyken python manage.py startapp blog komutunu vererek, projemizin içinde blog isminde yeni bir uygulamaya başlayabiliriz. Her django projesi bir veya birden fazla uygulamadan oluşur. Aynı zamanda bir proje'de geliştirdiğiniz uygulamayı kolaylıkla başka projelerinizde de kullanabilirsiniz. Aynı şekilde başkalarının geliştirdiği uygulamaları da kendi projenize çok rahatlıkla dahil edebilirsiniz. Bu özellik, django'nun en önemli özelliklerinden biridir. Bir kez yaptığınız bir işi, tekrar yapmanızı engeller. Yeni başladığımız uygulama, blog isimli bir klasörün içerisinde bulunan 4 adet py uzantılı dosyadan oluşuyor. __init__.py Boş bir dosyadır. Bu dosyayla neredeyse hiç bir işiniz olmayacak. Bu dizinin bir python paketi olduğu belirtmek için oradadır. models.py Bu sıradan bir python modülüdür. Bu modülün içerisinde veri yapılarımızı, yani modellerimizi, tanımlayacağız. Bu dosyanın detaylarına daha sonra değineceğiz. views.py Bu dosyanın içerisinde verilerimizi nasıl sunacağımıza karar verecek olan sınıfları tanımlayacağız. Yazı dizisinin ilerleyen bölümlerinde zaman zaman bu dosyayla ilgili detaylara değineceğiz. tests.py Bu modülün içerisinde ünite testi yapmak için gerekli sınıflar bulunur. Bu testler … -
Django ile Blog Geliştirme - Modeller
0'dan Blog'a Django yazı dizisinin ikinci bölümünde yazı dizisinin ilk bölümünde başlayıp, basit ayarlarını yaptığımız projemizin içinde blog uygulamasına başlayacağız ve uygulamamızın modellerini yazacağız.Bu yazı dizisinde bahsedilen blog uygulamasının son haline github deposundan ulaşabilirsiniz. Django'da yeni bir uygulamaya başlamak için, komut satırından başlamış olduğumuz projenin ana dizininin içindeyken python manage.py startapp blog komutunu vererek, projemizin içinde blog isminde yeni bir uygulamaya başlayabiliriz. Her django projesi bir veya birden fazla uygulamadan oluşur. Aynı zamanda bir proje'de geliştirdiğiniz uygulamayı kolaylıkla başka projelerinizde de kullanabilirsiniz. Aynı şekilde başkalarının geliştirdiği uygulamaları da kendi projenize çok rahatlıkla dahil edebilirsiniz. Bu özellik, django'nun en önemli özelliklerinden biridir. Bir kez yaptığınız bir işi, tekrar yapmanızı engeller. Yeni başladığımız uygulama, blog isimli bir klasörün içerisinde bulunan 4 adet py uzantılı dosyadan oluşuyor. __init__.py Boş bir dosyadır. Bu dosyayla neredeyse hiç bir işiniz olmayacak. Bu dizinin bir python paketi olduğu belirtmek için oradadır. models.py Bu sıradan bir python modülüdür. Bu modülün içerisinde veri yapılarımızı, yani modellerimizi, tanımlayacağız. Bu dosyanın detaylarına daha sonra değineceğiz. views.py Bu dosyanın içerisinde verilerimizi nasıl sunacağımıza karar verecek olan sınıfları tanımlayacağız. Yazı dizisinin ilerleyen bölümlerinde zaman zaman bu dosyayla ilgili detaylara değineceğiz. tests.py Bu modülün içerisinde ünite testi yapmak için gerekli sınıflar bulunur. Bu testler …