Bunun için googledim, ancak hala Django'nun "uygulamalar" olarak tanımladığı şeylerle ilgili sorun yaşıyorum.
Ana projedeki modelleri kullanıyor olsa da, bir sitedeki her bir işlevsellik için yeni bir uygulama oluşturmalı mıyım?
Yeni bir uygulamanın ne zaman ne zaman ayrılacağına ve "ana proje" ya da diğer uygulamalarla birlikte ne zaman işlevselliği koruyacağınıza ilişkin iyi bir kuralınız var mı?
James Bennett, tekrar kullanılabilir uygulamaları Django'da nasıl organize edeceğinizi gösteren harika bir slayt setine sahip.
Django uygulamalarını "uygulamalar" yerine tekrar kullanılabilir modüller veya bileşenler olarak düşünmeyi tercih ederim.
Bu, belirli özellikleri birbirinden kapsülleme ve ayrıştırmama yardımcı oluyor, belirli bir "uygulamayı" toplulukla paylaşmaya karar vermem gerekirse yeniden kullanılabilirliği geliştirmek ve sürdürülebilirliği artırmak.
Genel yaklaşımım, sanki genel olarak yayınlayacakmışım gibi belirli özellikleri veya özellik kümelerini "uygulamalar" içine yerleştirmektir. Buradaki zor kısım, her bir kovanın ne kadar büyük olduğunu bulmak.
Kullandığım iyi bir püf nokta, uygulamalarımın genel olarak piyasaya sürülmesi durumunda nasıl kullanılacağını hayal etmektir. Bu genellikle beni kovaları küçültmeye teşvik eder ve “amacını” daha net bir şekilde tanımlar.
Her bir mantıksal olarak ayrı model için yeni uygulamalar oluşturma eğilimindeyim. Örneğin.:
6 Eylül 2008 tarihli güncellenmiş sunum.
DjangoCon 2008: Yeniden Kullanılabilir Uygulamalar @ 7: 53
Slayt: Yeniden Kullanılabilir_apps.pdf
Slayttan Alınan
Bu kendi uygulaması mı olmalı?
- Uygulamanın odağıyla tamamen ilgisi yok mu?
- Başka ne yapıyorum ortogonal mi?
- Diğer sitelerde benzer işlevselliğe ihtiyacım olacak mı?
Bunlardan herhangi biri "Evet" ise? O zaman en iyisine a ayrı uygulama.
Uyguladığım kural, işlevselliği farklı bir projede tekrar kullanmak istersem yeni bir uygulama olmalı.
Projenizdeki modelleri daha iyi anlaması gerekiyorsa, muhtemelen modellere yapıştırmak daha uyumludur.
Bir 'uygulama' çok farklı şeyler olabilir, hepsi gerçekten tadına bakmak. Örneğin, bir blog oluşturduğunuzu varsayalım. Uygulamanız tüm blog olabilir veya bir 'admin' uygulamasına, genel görünümler için bir 'site' uygulamasına, bir 'rss' uygulamasına, bir 'hizmet' uygulamasına sahip olabilirsiniz; kendi yollarını vs.
Ben şahsen blog'un kendisinin bir uygulama olmasını ve içindeki işlevselliği bozardım. Blog daha sonra diğer web sitelerinde kolayca yeniden kullanılabilir.
Django hakkında güzel bir şey, dizin ağacınızın herhangi bir düzeyinde bulunan models.py dosyasını Django modellerini içeren bir dosya olarak tanımasıdır. Bu nedenle, işlevselliğinizi bir 'uygulamanın' içindeki daha küçük 'alt uygulamalara' ayırmak hiçbir şeyi zorlaştırmaz.
İnternette bulduğum bu sorunun en iyi iki cevabı:
Her iki kaynak, aşağıdaki durumlarda ayrı bir uygulama oluşturmanız gerektiğini kabul eder: