Biri bana Django ve Model View Controller kalıbı arasındaki farkların nerede olduğunu açıklayabilir mi?
İşlevsel olarak, bu farklılıklardan ne bekleyebiliriz - yani Django'yu, örneğin Ruby on Rails'e kıyasla farklı çalışan nedir?
Biri bana Django ve Model View Controller kalıbı arasındaki farkların nerede olduğunu açıklayabilir mi?
İşlevsel olarak, bu farklılıklardan ne bekleyebiliriz - yani Django'yu, örneğin Ruby on Rails'e kıyasla farklı çalışan nedir?
Yanıtlar:
Django Book'a göre Django, MVC modelini MVC çerçevesi olarak adlandırılacak kadar yakından takip ediyor.
Django'ya MTV çerçevesi olarak atıfta bulunulmuştur çünkü denetleyici çerçevenin kendisi tarafından yönetilir ve heyecanın çoğu modellerde, şablonlarda ve görünümlerde gerçekleşir.
MTV / MVC hakkında daha fazla bilgiyi buradan okuyabilirsiniz:
MTV (veya MVC) Geliştirme Modeli
Böyle Ruby on gibi diğer MVC Web geliştirme çerçeveler, aşina iseniz, olmaya Django görüşü alınır kontrolörleri ve Django şablonları olmak görünümleri .
Bu, MVC'nin farklı yorumlarıyla ortaya çıkan talihsiz bir kafa karışıklığıdır.
Django'nun MVC yorumunda, görünüm kullanıcıya sunulan verileri açıklar; sadece verilerin nasıl göründüğü değil, hangi verilerin sunulduğu.
Buna karşılık, Ruby on Rails ve benzer çerçeveler, denetleyicinin işinin, kullanıcıya hangi verilerin sunulacağına karar vermeyi içerdiğini, oysa görünümün hangi verilerin sunulduğu değil, kesinlikle verilerin nasıl göründüğünü gösterdiğini öne sürmektedir.
Django SSS kendisi başlamak için iyi bir yerdir:
MVC yorumumuzda, "görünüm" kullanıcıya sunulan verileri açıklar. Verilerin nasıl göründüğü değil, hangi verilerin sunulduğu önemlidir. Görünüm, nasıl gördüğünüzü değil, hangi verileri gördüğünüzü açıklar. Bu ince bir ayrım.
...
Dahası, içeriği sunumdan ayırmak mantıklıdır - bu, şablonların geldiği yerdir. Django'da, bir "görünüm" hangi verilerin sunulduğunu açıklar, ancak bir görünüm normalde verilerin nasıl sunulduğunu açıklayan bir şablona delege eder.
O halde "kontrolör" nereye sığar? Django'nun durumunda, muhtemelen çerçevenin kendisidir: Django URL yapılandırmasına göre uygun görünüme bir istek gönderen makine.
Kısaltmalara açsanız, Django'nun bir "MTV" çerçevesi, yani "model", "şablon" ve "görünüm" olduğunu söyleyebilirsiniz. Bu arıza çok daha mantıklı.
"Model Görünümü Denetleyicisi" nin yalnızca bir model olduğunu, yani ortak bir mimariyi tanımlama girişimi olduğunu unutmayın. Dolayısıyla daha iyi bir soru şu olabilir: "Django, Model Görünüm Denetleyici kalıbına ne kadar iyi uyuyor?"
Çerçeve parçalarının adlarını düşünmeden kod yazdığınızda, aralarında şüpheli farklar yoktur, örneğin RoR. Ancak bu, verdiğiniz kullanıma bağlıdır models
, çünkü Django'da, diğer çerçevelerde denetleyici düzeyinde kalacak bazı mantıkları kolayca içerirler.
view
Django'ya ile getirilirken veriler için sorgu bir dizi olabilir ve şablonuna geçme eğilimi vardır.
views
Django gibi bir şey controller
MVC ve template
Django daha muhtemel bir olduğunuviews
Mvt'de, bir URL'ye bir istek bir View'e gönderilir. Bu Görünüm, Modeli çağırır, manipülasyonlar gerçekleştirir ve verileri çıktı için hazırlar. Veriler, yanıt olarak yayınlanan bir Şablona aktarılır. ideal olarak web çerçevelerinde, denetleyici görünümden gizlenir.
MVC'den fark buradadır: mvc'de, kullanıcı gui ile etkileşime girer, denetleyici isteği işler ve modeli bilgilendirir ve görünüm, sonucu kullanıcıya göstermek için modeli sorgular.