如何在我的Google App Engine项目中使用Django 1.2模板?

时间:2010-12-29 20:46:54

标签: python django google-app-engine django-templates

有人可以建议在我们的GAE应用程序中包含django 1.2模板的详细资源吗?到目前为止我找到了

  1. 描述如何压缩django文件并将其添加到项目中的文档
  2. 有关在GA中运行本机django项目的文档
  3. 关于将1.0和1.1库包含到我们的项目中的文档
  4. 但还没有描述如何在我们的项目中使用django 1.2模板。具体来说,如何在我的python脚本顶部形成神秘魔法,这将神奇地说服GAE使用我的压缩django库。

    我的python脚本中有这个:

    import sys
    sys.path.insert(0, 'django/django.zip')
    

    与GAE教程类似,这里是我渲染模板的方式:

    template_values = {
        'formerror': formerror,
        'media': media,
        'status': status
    }
    
    path = os.path.join(os.path.dirname(__file__), formtemplate)
    self.response.out.write(template.render(path, template_values)
    

    但GAE缺少一些使用Django 1.2渲染模板的内容。它是什么?

2 个答案:

答案 0 :(得分:3)

我用过这个:

from google.appengine.dist import use_library
use_library('django', '1.1')
from google.appengine.ext.webapp import template

在这种情况下,我使用的是1.1版本,但我认为它应该与1.2相同。

答案 1 :(得分:0)

前一段时间我遇到了同样的问题 - 我想将1.2版本用于模板而不是0.96(由GAE提供)。以下代码似乎对我有用。

# some standard Google App Engine imports (optional)
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext import db

# Remove Django modules (0.96) from namespace
for k in [k for k in sys.modules if k.startswith('django')]:
    del sys.modules[k]

# Force sys.path to have our own directory first, in case we want to import
# from it. This way, when we import Django, the interpreter will first search
# for it in our directory.
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

# Must set this env var *before* importing any part of Django
# (that's required in Django documentation)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

# New Django imports
from django.template.loader import render_to_string
from django.conf import settings

# Configure dir with templates
# our template dir is: /templates
TEMPLATE_DIR = os.path.join(os.path.dirname(__file__),'templates')
settings.configure(TEMPLATE_DIRS = (TEMPLATE_DIR,'') )

但是,如果您需要来自Django的模板,而不需要其他API,请考虑使用Jinja。这就是我打算做的事情。