it-swarm-tr.com

Django'da ne zaman yeni bir uygulama (startapp ile) oluşturulur?

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ı?

79
Håkan

James Bennett, tekrar kullanılabilir uygulamaları Django'da nasıl organize edeceğinizi gösteren harika bir slayt setine sahip.

39
Antti Rasinen

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.

18
blahspam

Her bir mantıksal olarak ayrı model için yeni uygulamalar oluşturma eğilimindeyim. Örneğin.:

  • Kullanıcı profilleri
  • Forum Yazıları
  • Blog gönderileri
11
pobk

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.

11
Yeo

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.

5
Ryan

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.

1
willurd

İnternette bulduğum bu sorunun en iyi iki cevabı:

  1. Yeniden Kullanılabilir Uygulamalar Konuşması ( slaytlar ) ( video ) başka cevaplarda da belirtilmiştir. Yazar ve Django'nun katkısı olan Bennett, düzenli olarak başkalarının kullanması için uygulamalar yayınlar ve birçok küçük uygulamaya yönelik güçlü bir bakış açısına sahiptir.
  2. Doordash'ın Ölçekli Django İçin İpuçları bunun tersi tavsiyelerde bulunur ve kendi durumlarında birçok ayrı uygulamaya başladıktan sonra tek bir uygulamaya geçtiklerini söyler. Uygulamalar arasındaki geçiş bağımlılığı grafiğiyle ilgili problemlerle karşılaştılar.

Her iki kaynak, aşağıdaki durumlarda ayrı bir uygulama oluşturmanız gerektiğini kabul eder:

  • Uygulamanızı başka bir Django projesinde yeniden kullanmayı planlıyorsanız (özellikle başkalarının yeniden kullanması için yayınlamayı planlıyorsanız).
  • Uygulamanın başka bir uygulama arasında çok az veya hiç bağımlılığı yoksa. Burada, gelecekte kendi mikro servisi olarak çalışan bir uygulamayı hayal edebilirsiniz.
1
Jonathan Berger