Django& webapp一起生活在GAE上?

时间:2009-09-18 16:34:43

标签: django google-app-engine

是否可以同时使用这两个框架? 所以我可以

from google.appengine.ext import webapp
from django.template.loader import render_to_string

class MainPage(webapp.RequestHandler):

    def get(self):
        self.response.out.write(render_to_string('some.template'))

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

运行映射到不同的URL?

编辑: 问题基本归结为我如何实施

urlpatterns = [
               # webapp-style handler
               (r'/webapp', views.MainPage),
               # django
               (r'/django', views.hello),
              ]

3 个答案:

答案 0 :(得分:4)

当然 - 只要你在一个子应用程序中没有使用0.9.6而在另一个子应用程序中没有使用1.0(通过use_library调用)。只需将URL正则表达式映射到app.yaml中的单独处理程序,就可以了。

答案 1 :(得分:1)

Django只是一组库,所以从某种意义上说,你绝对可以在Google App Engine(或任何兼容WSGI的web容器)上运行它。但是,如果您尝试自由混合两个框架,它将无法工作,因为每个框架都希望完全控制请求/响应周期,并且对请求生命周期,会话管理等具有不同的抽象。

可以使用Django编写自己的WSGI处理程序模块来编写GAE应用程序代码。有关如何让单个Django应用程序回答GAE实例的所有请求的基本概述,请参阅this article

在单个请求中混合使用两者是行不通的,尽管可以使用Django模板库(或像Jinja这样的克隆),如果你只是想要前面的话 - 结束借用Django的语法。此外,您应该能够通过扩展上述文章中的WSGI调度程序,在不同的URL下设置Google应用程序处理程序和Django端点。但是,我会质疑是否尝试为单个站点支持两个完全不同的Web框架确实值得额外的复杂性。

答案 2 :(得分:0)

是的!事实上,如果你去GAE网站,“入门”教程就是这样说的!这两个库都是内置的,所以它很容易起床和使用它。

Google App Engine: Getting Started