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

4 投票
2 回答
1764 浏览
提问于 2025-04-16 09:11

有没有人能推荐一些详细的资料,教我们如何在我们的GAE应用中使用django 1.2的模板?到目前为止,我找到的资料有:

  1. 关于如何将django文件打包并添加到我们项目中的说明
  2. 关于在GA中运行原生django项目的说明
  3. 关于如何将1.0和1.1版本的库包含到我们项目中的说明

但是还没有找到关于如何在我们的项目中使用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

我之前也遇到过同样的问题——我想用1.2版本的模板,而不是GAE提供的0.96版本。下面的代码对我来说似乎有效。

# 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。我打算这么做。

3

我用了这个:

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

在这个情况下,我使用的是1.1版本,但我觉得1.2版本应该也能一样工作。

撰写回答