2012-12-22 20 views
7

Django'yu öğreniyorum. Arka planım, Model View Controller çerçevelerini kullanarak deneyim sahibi PHP ve Java'dan. Görüşlerim, modellerim ve şablonlar için her zaman ayrı bir dosyam vardı - ancak Django öğreticisi yalnızca bir view.py ve models.py dosyasına sahip olduklarını belirtiyor.İyi Uygulama: Django Uygulamalarında views.py düzenlenmesi

Küçük bir uygulamanız varsa, görünüşünüz ve modellerinizi amaçlarına göre düzenlemek isterseniz ne olur? Örneğin, bir Projeler görünümü ve Kilometre Taşları görünümü. Ben her görünüm modülü için başka Python paketi (uygulama) oluşturmak zorunda etmeyeceğini umut ediyorum:

python manage.py startapp projects

python manage.py startapp milestones

Sana bir milestones.py ve projeleri olabileceğini varsayabiliriz. Görünümler ve modelleriniz için genel bir view.py ve models.py yerine py Daha sonra modeller gerektiğinde görünümlere aktarılabilir ve istekler belirli görünümlere yönlendirilebilir mi?

cevap

17

Görünümler ve modeller içeren birden çok dosyaya sahip olmakla ilgili sorun yoktur. Aslında ihtiyacınız olan tek şey views modülü ve models modülüdür. Python'da, modül ya .py ile biten ya da __init__.py dosyasını içeren klasördür.

app_folder 
    - views 
    | - __init__.py 
    | - some_view.py 
    | - some_other_view.py 
    - models 
    | - __init__.py 
    | - some_model.py 
    | - some_other_model.py 

models/__init__.py aşağıda kod benzer olmalıdır (submodüller django hiç tarafından bakılması gereken):

uygulaması gibi bir şey bakabilirsiniz.

from some_model import SomeModel 
from some_other_model import SomeOtherModel 

ortak bir yaklaşım tek farkı modellerinde tanımlanan app_label sahip olmaktır:

class SomeModel(models.Model): 
    class Meta: 
     app_label = 'app_folder' 

Kontrol dışarı ilgili doc entry.

Güncelleme:

geliştirme sürümü dokümanlar 1.7 sürümü ile bu durumda artık başlangıç ​​app_label tanımlamak zorunda olmayacak diyelim.

Sonsöz:

bunu genellikle app çok büyük ve birkaç uygulamalar bölmek gerektiği anlamına gelir yapmanız gerekiyorsa Aslında. Django'ya gelen çoğu insan, çok sayıda küçük uygulamaya sahip olmaktan korkuyor. Uyguladığınız daha fazla üçüncü parti uygulamaları, uygulamayı gerçekleştirdiğinizde, bir ve tek sorunu çözmelisiniz. Örneğinizde uygulamanızın milestones mükemmel okunaklı görünüyor.