문제

기 시작했는 응용 프로그램에서 Google 애플리케이션 엔진 바로 그것이 나왔을 때,재생하는 기술을 가진 작업에 애완 동물 프로젝트는 생각 했다 오랜 시간 그러나 결코 주위를 받을 시작합니다.결과 BowlSK.그러나,그것은 성장,기능이 추가되었습니다,그것은 받는 정말 어려운 일을 유지하는 조직적-주로 때문에 사실 이번이 처음 python 프로젝트,그리고 아무것도 몰랐고 그것에 대해 시작할 때까지 작동합니다.

내가 무엇을 가지고있다:

  • 주요 레벨을 포함합니다:
    • 니다.py 파일(하지 않았을 만드는 방법을 알고 패키지의 일)
    • 니다.html 템플릿에 대한 기본 수준이 페이지
  • 하위 디렉토리
    • 별도의 폴더에 대한 css,이미지,js,etc.
    • 는 폴더를 개최한다.html 템플릿 subdirecty 형 url

예제:
http://www.bowlsk.com/ 지도 홈페이지(기본 패키지),템플릿에서"index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 지도 ViewSeriesPage(다시 기본 패키지),템플릿에서"games/view-series.html"

그것은 불쾌한입니다.나는 어떻게 재구성?나는 아이디어 2:

  • 주요 포함하는 폴더:appdef,인덱스 main.py?

    • 하위 폴더를 위한 코드입니다.이 있을 나의 첫 번째 패키지?
    • 하위 폴더를 위한 템플릿이 있습니다.폴더 구조와 일치 패키지의 계층 구조
    • 개별에 대한 하위 폴더 css,이미지,js,etc.
  • 주요 포함하는 폴더 appdef,인덱스 main.py?

    • 하위 폴더를 위한 코드 템플릿이 있습니다.이 방법은 나의 처리기준 다른 템플릿기 때문에 이 단계에서,추가하는 기능을 많이,그래서 수정을 하나의 의미를 수정합니다.다시 할 수 있어야겠다고 생각했어요 이 폴더 이름은 첫 번째 패키지에 대한 이름을 내립니다.나는 다음과 같은 폴더를"src",그러나 나는 원하지 않는 수업을 수"src.WhateverPage"

이 있는 최상의 방법?씩 1.0 수평선에,내가 지금 할 수 있을 개선하는 능력을 통합하는 그것으로 되는 때에 공식 GAE 템플릿 엔진?나는 단순히 시작하려고 이러한 것들과 보는 더 나은 것 같지만,향후 버전에는 교환하는 데이터의 refactoring 지원하지 않는 것 처리 패키지를 잘 이동하는,그래서 그것은 가능성이 아닌 사소한 작업이 모든 것을 얻으려면 다시 작동합니다.

도움이 되었습니까?

해결책

첫째,내가 당신을 보라"급속한 발전으로 Python,Django,Google App Engine"

GvR 설명하는 일반/표준 프로젝트를 레이아웃:10 페이지의 그 슬라이드 프레젠테이션.

여기서 설정할 수 있습니다 약간 수정된 버전의 레이아웃/구조에서는 여기에 포함되지 않습니다.나는 꽤 많이 따라 패턴 자신입니다.당신은 또한 당신을 언급된 패키지가 있습니다.지만 확인하는 각 하위 폴더가 있__init__.py 파일입니다.좋아하는 경우 그 비어 있습니다.

보일러 파일

  • 이는 거의 사이에서 변화 프로젝트
  • app.yaml:모든 정적이 아닌 요청 main.py
  • main.py:초기화용 보내는 모든 요청

프로젝트를 레이아웃

  • 정적/*:정적 파일제공 응용 프로그램에 의해 직접 엔진
  • 프로그램이 setup/*.py:응용 프로그램-특정 python 코드
    • views.py,models.py,tests.py,__init__.py 와 더
  • 템플릿/*.html:템플릿(또는 프로그램이 setup/templates/*.html)

여기에 몇 가지 예제 코드하는 데 도움이 될 수 있습뿐만 아니라:

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):

나는 생각이 레이아웃을 좋은 작품에 대한 새와는 비교적 작은 중소 프로젝트입니다.대규모 프로젝트는 것이 좋을 깨고 견해 및 모델을 자신의 하위 폴더와 같은 것:

프로젝트를 레이아웃

  • 정적/:정적 파일제공 응용 프로그램에 의해 직접 엔진
    • js/*.js
    • 이미지/*.gif|png|jpg
    • css/*.css
  • 프로그램이 setup/:응용 프로그램 구조
    • 모델/*.py
    • views/*.py
    • 테스트/*.py
    • 템플릿/*.html:템플릿

다른 팁

나의 일반적인 레이아웃을 다음과 같이 나타납니다.

  • app.yaml
  • 인덱스이다.yaml
  • request.py -포함하는 기본 WSGI 램
  • lib
    • __init__.py -일반적인 기능을 포함하여,요청을 처리기의 기본 클래스
  • 컨트롤러 포함하는 모든 처리기입니다.요청을 합니다.yaml 가져옵니다.
  • 템플릿
    • 모든 장 템플릿을 사용하여 컨트롤러
  • 모델
    • 모든 데이터 저장소 모델 클래스
  • static
    • 정적 파일(css,이미지,etc.).매핑/정적 응용 프로그램에 의해.yaml

내가를 제공할 수 있습의 예입니다.yaml,request.py lib/init.py 및 샘플 컨트롤러면 이것은 분명하다.

구현 google app engine 보일러 오늘날에 그것을 검사하 github.이와 함께 라인에 의해 설명 닉슨상(하는 데 사용되는 작업에 대한 Google).

이 링크를 따르십시오 gae-보일러

내가 생각하는 첫 번째 옵션은 간주 좋습니다.고 코드 폴더의 첫 번째 패키지입니다.의 리트펠트 프로젝트 개발하여 귀도 반로 섬은 아주 좋은 모델에서 배울 수 있습니다.그것을 보라: http://code.google.com/p/rietveld

과 관련하여 Django1.0,나는 당신이 사용하기 시작 장고 트렁크에는 코드 대신 GAE 내장 django 포트입니다.다시 봐야에 어떻게하는지 리트펠트.

webpy 그래서 내가 채택했으로 템플릿 프레임워크에서 Google App Engine.
패키지 폴더는 일반적으로 편성되 다음과 같다:

app.yaml
application.py
index.yaml
/app
   /config
   /controllers
   /db
   /lib
   /models
   /static
        /docs
        /images
        /javascripts
        /stylesheets
   test/
   utility/
   views/

은 예입니다.

나는 전적으로 최에 최근 모범 사례 등을 때 코드 레이아웃,지 않았을 때 첫 GAE 응용 프로그램,내가 사용하는 무언가를 따라 당신의 두 번째 옵션,코드 템플릿은 다음을 서로.

가 있었 두 가지 이유-중 하나,그것은 유지 코드 템플릿,근처에,그리고 둘째,나는 디렉토리 구조 레이아웃을 모방하는 웹사이트의-그것을 만드는(나)조금 더 쉽게 너무 기억하는 모든 것이었다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top