2010-03-30 25 views
6

Python ve uygulama motoru için nispeten yeniyim ve ilk projemi bitirdim. Her bir py dosyası için birkaç * .py dosyası (genellikle site üzerindeki her sayfa için py dosyası) ve tapınak dosyalarından oluşur. Ayrıca, çok sayıda sayfa için ortak birçok işlevi olan bir büyük PY dosyam var, ayrıca db.Model sınıflarını da bildirdim (veri deposu çeşitleri).Python ve App Engine proje yapısı

Sorum şu: Bu dosyaların düzenlenmesi konulu (eğer varsa). Veri deposu sınıflarıyla bir model.py oluşturursam, farklı bir pakette olmalı mıyım? Şablon dosyalarını ve tüm sayfaları işleyen tüm pim dosyalarını nereye koymalıyım (büyük bir ortak PY dosyasıyla aynı dizinde olmalılar)?

MVC ve benzeri uygulamaları çevrimiçi aramaya çalıştım ancak çok az var.

sayesinde

Joel

cevap

3

Genellikle bu şekilde benim projeler organize:

project 
    main.py 
    README 
    models 
     bar.py 
     foo.py 
    views 
     foolist.hml 
     barlist.hml 
    controllers 
     controller1.py 
     controller2.py 
    api 
     controllerapi.py 
    helpers 
     utilities.py 
    lib 
     extfoo.py 
    db 
    foo.db 
    test 
    test.py 

bu post bak; Bir projeyi nasıl yapılandıracağınız konusunda harika bir makale (python'da değil, önemli değil).

+0

Hızlı cevap ve çok iyi bir makaleye yapılan referans için teşekkürler! Benim için birkaç şeyi açıklığa kavuşturabilirseniz çok memnun olurum: 1) Her sayfa için neden farklı bir model dosyası kullanırsınız? Çoğu sayfa genellikle sayfalarında aynı Çeşitleri (modelleri) kullanır gibi görünüyor, böylelikle bunları bölmek zor. 2) Doğru bir şekilde anladım - controller1.py foo ve control için bir işleyiciye sahip olacak.2 bar için bir işleyici olacak, değil mi? Daha sonra veri mağazasında değişiklik yapmak isterseniz, utilities.py'de bir işlevi çağırırsınız. Doğru anladım mı? Teşekkürler! – Joel

+0

Sadece içerisine koyduğum şeye değil, dizin yapısına odaklanın, sadece bir örnek var :) Tüm modeller için tek bir dosya ve tüm kontrolörler için bir dosya kullanabilirsiniz! Web'de geliştirdiğimde (gae \ web.py kullanarak) böyle bir yapıyı tipik olarak kullanıyorum. – systempuntoout

+0

yapacak :) Sadece "denetleyiciler" tarafından işleyicileri tutan dosyayı kastediyorsunuz emin olmak istedim. Ve son bir şey (söz veriyorum): Temel olarak "denetleyiciler" ve "modeller" paketler (anladığım kadarıyla _init_.py dosyası içermelidir), görünümler ise normal bir dizindir (_init.py dosyası yok), değil mi? – Joel

3

Tipik Öyle gibi düzenlemek:

project/ 
    main.py 
    models.py 
    app.yaml 
    index.yaml 
    templates/ 
    main.html 
    foo.html 
    ... 
    styles/ 
    project.css 
    js/ 
    jquery.js 
    project.js 
    images/ 
    icon.png 
    something.jpg 

Ve main.py benim işleyicileri tüm var vs.

models.py benim modellerinin, tüm ben çok ait varsa işleyicileri ve bazı işleyicilerin işlevlerini diğerlerinden kolayca ayırabilirim (görev işleyicileri ve istek işleyicileri vs xmpp/e-posta işleyicileri gibi) Başka bir foo_handlers.py ekleyeceğim, ancak genellikle hepsini sadece main.py

Ama sonra bir kazanç, ben çok karmaşık Python App Engine uygulamaları yazmamak eğilimindedir ...

+0

Teşekkürler! çok yararlı. CSS "stil sayfası" nı ve "javascript" klasörlerini nereye koyarsınız? – Joel

+0

Cevabımı JS, CSS ve resimler eklemek için düzenledim. Asıl amacım, çoğu işleyicinin oldukça kısa ve tatlı olması ve aslında herhangi bir şey yapmaya açık olduğun daha fazla dosyayı daha karmaşık hale getirmesi. –