Chr*_*org 119 python google-app-engine
我刚开始在谷歌应用引擎中启动了一个应用程序,玩这项技术并开展一个我一直在考虑的宠物项目,但是从来没有开始过.结果是BowlSK.然而,随着它的发展和功能的增加,它变得非常难以保持组织 - 这主要是因为这是我的第一个python项目,而且在我开始工作之前我对此一无所知.
是)我有的:
示例:
http://www.bowlsk.com/ maps到HomePage(默认包),模板位于"index.html"
http://www.bowlsk.com/games/view-series.html?series=7130映射到ViewSeriesPage(再次,默认包),"games/view-series.html"模板
这很讨厌.我该如何重组?我有两个想法:
主文件夹包含:appdef,indexes,main.py?
主文件夹包含appdef,索引,main.py?
有最好的做法吗?随着Django 1.0即将到来,当它成为官方的GAE模板引擎时,我现在能做些什么来提高我与它集成的能力?我只是开始尝试这些东西,并看到哪些看起来更好,但pyDev的重构支持似乎并没有很好地处理包移动,所以将所有这些工作重新开始可能是一项非常重要的任务.
fue*_*sjr 104
首先,我建议您看看" 使用Python,Django和Google App Engine进行快速开发 "
GvR描述了幻灯片演示文稿第10页的一般/标准项目布局.
在这里,我将从该页面发布一个略微修改的布局/结构版本.我自己也非常关注这种模式.您还提到您在使用包时遇到问题.只需确保每个子文件夹都有一个__init__.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)
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
from google.appengine.ext import db
class SampleModel(db.Model):
Run Code Online (Sandbox Code Playgroud)
我认为这种布局适用于新的和相对中小型项目.对于较大的项目,我建议将视图和模型分解为拥有自己的子文件夹,例如:
Nic*_*son 16
我通常的布局看起来像这样:
__init__.py - 常用功能,包括请求处理程序基类我可以提供我的app.yaml,request.py,lib/init .py和示例控制器的示例,如果不清楚的话.
我认为第一种选择被认为是最佳做法.并将代码文件夹作为您的第一个包.由Guido van Rossum开发的Rietveld项目是一个非常好的模型.看看它:http://code.google.com/p/rietveld
关于Django 1.0,我建议你开始使用Django中继代码而不是内置django端口的GAE.再看看它在Rietveld中是如何完成的.