如何在我的Google App Engine项目中使用Django 1.2模板?
有没有人能推荐一些详细的资料,教我们如何在我们的GAE应用中使用django 1.2的模板?到目前为止,我找到的资料有:
- 关于如何将django文件打包并添加到我们项目中的说明
- 关于在GA中运行原生django项目的说明
- 关于如何将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版本应该也能一样工作。