SORU
7 EYLÜL 2008, Pazar


Google App Engine için proje yapısı

Başladığım bir uygulamada Google App Engine doğru zaman çıktı ile oynamak için, teknoloji ve iş bir evcil hayvan projesi vardı süredir düşünüyordum uzun zamandır ama hiç etrafta dolanmaya başladı başladı. Sonuç BowlSK. Ancak, farklı olarak, yetişkin ve özellikler eklendi, o oldu gerçekten zor işleri devam organize - esas nedeniyle aslında bu benim ilk python proje, ve ben bilmiyordum bir şey hakkında bu kadar çalışmaya başladım.

Ben ne var:

  • Ana Düzeyde içerir:
    • tüm .dosyaları (paketler çalışması için nasıl bilmiyordum) py
    • tüm .html temel düzey sayfaları için şablonlar
  • Alt dizinler:
    • css, resim, js, vb için ayrı bir klasör.
    • klasörleri tutun .subdirecty tipi için html şablonları URL

Örnek:http://www.bowlsk.com/ Ana Sayfa (default package),"" . index.html şablon ^/^ br . http://www.bowlsk.com/games/view-series.html?series=7130 ViewSeriesPage (yine varsayılan paket), şablon haritalar"" . games/view-series.html

İğrenç bir şey. Nasıl yeniden yapılandırılması mı? 2 fikirler vardı:

  • Ana Klasörü içeren: appdef, dizinler, main.py?

    • Kodu alt. Bu benim ilk paketi olmak zorunda mı?
    • Şablonlar klasörü. Klasör hiyerarşisi paketi hiyerarşi maç olur
    • Css için ayrı alt klasörler, resimler, js, vb.
  • Ana Klasörü içeren appdef,, main.py dizinler?

    • Kod şablonları klasörü. Bu şekilde bu aşamada, birçok özellik ekliyorum, diğer bir ifade değişiklikleri değişiklikler için işleyici sınıf doğru şablonu yanında var. Yine, bu klasör adı derslerim için ilk paket adı olması gerekiyor? Klasörü" ama ben derslerimi "src.olmak istemiyorum "src olmak istiyorum". WhateverPage

En iyi yöntem var mı? Ufukta 1.0 Django ile resmi GAE şablon motoru olduğunda şimdi dahil ederek yeteneğimi geliştirmek için yapabileceğim bir şey var mı? İstiyorum sadece başla çalışırken bu şeyler, ve görüyorum ki daha iyi görünüyor, ama pyDev ... ... yeniden düzenleme desteği gibi görünmüyor kolu paket hareket çok iyi, çok daha kolay olacak muhtemelen önemsiz olmayan bir görev için tüm bu çalışma yine.

Teşekkürler.

CEVAP
16 EYLÜL 2008, Salı


İlk olarak, bir göz atmanızı öneririm "Rapid Development with Python, Django, and Google App Engine"

GvR slide presentation onun Sayfa 10 genel/standart bir proje düzenini açıklar.

İşte o sayfa düzeni/yapısı biraz değiştirilmiş bir versiyonu göndeririz. Ben çok fazla bu deseni kendim izleyin. Ayrıca paketleri ile ilgili sorun olduğunu söylemiş. Sadece alt klasörleri her __init__.py bir dosya vardır. Onun boş ise sorun yok.

Demirbaş dosyaları

  • Bunlar zor projeler arasında değişir
  • app.yaml: statik olmayan main.py tüm istekleri yönlendirir
  • main.py: uygulaması ve tüm istekleri göndermek başlatılamadı

Proje-lay

  • statik/*: statik dosyalar; doğrudan App Engine ile servis edilir
  • /*uygulamam.py: uygulamaya özel python kodu
    • views.py, models.py,, __init__.pytests.py ve daha fazlası
  • şablonlar/*.html: şablonları//*şablonlar uygulamam. (ya html)

Burada yardımcı olabilecek bazı kod örnekleri:

main.py

import wsgiref.handlers

from google.appengine.ext import webapp
from myapp.views import *

application = webapp.WSGIApplication([
  ('/', IndexHandler),
  ('/foo', FooHandler)
], debug=True)

def main():
  wsgiref.handlers.CGIHandler().run(application)

myapp/views.py

import os
import datetime
import logging
import time

from google.appengine.api import urlfetch
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import webapp
from models import *

class IndexHandler(webapp.RequestHandler):
  def get(self):
    date = "foo"
    # Do some processing		
    template_values = {'data': data }
    path = os.path.join(os.path.dirname(__file__)   '/../templates/', 'main.html')
    self.response.out.write(template.render(path, template_values))

class FooHandler(webapp.RequestHandler):
  def get(self):
    #logging.debug("start of handler")

myapp/models.py

from google.appengine.ext import db

class SampleModel(db.Model):

Bu yeni düzen için büyük ve orta ölçekli projeler için nispeten küçük yarar diye düşünüyorum. Daha büyük projeler için görüş ve modelleri kendi alt klasörleri için ayrılmak gibi bir şey önermek istiyorum:

Proje-lay

  • statik/: statik dosyalar; doğrudan App Engine tarafından sunulan
    • /*js.js
    • resimler/*.gif|png|jpg
    • /*css.css
  • uygulamam/: uygulama yapısı
    • modelleri/*.py
    • görüş/*.py
    • testler/*.py
    • şablonlar/*.html şablonları

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • psidot

    psidot

    2 Kasım 2006
  • TSE

    TSE

    12 Kasım 2012