Как использовать шаблоны Django 1.2 в моем проекте Google App Engine? - PullRequest
4 голосов
/ 29 декабря 2010

Кто-нибудь может предложить подробный ресурс для включения шаблонов django 1.2 в наши приложения GAE? До сих пор я нашел

  1. документы, описывающие, как заархивировать файлы django и добавить их в наш проект
  2. документы по запуску нативных проектов django в GA
  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 ]

3 голосов
/ 08 января 2011

Я использовал это:

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

В этом случае я использовал версию 1.1, но я думаю, что она должна работать так же для 1.2.

0 голосов
/ 16 февраля 2011

У меня была такая же проблема некоторое время назад - я хотел использовать версию 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 .Это то, что я планирую сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...