Pregunta

Estoy usando el Launcher de Windows entorno de desarrollo para Google App Engine.

He descargado Django 1.1.2 origen, y de la onu-tarrred la "django" subdirectorio para vivir dentro de mi directorio de la aplicación (un compañero de aplicación.yaml)

En la parte superior de cada uno .py archivo de origen, hago esto:

import settings
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'

En mi archivo settings.py (que vive en la raíz de la aplicación en el directorio, así), yo hago esto:

DEBUG = True
TEMPLATE_DIRS = ('html')
INSTALLED_APPS = ('filters')

import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
from django.template import loader

Sí, esto parece un poco excesivo, ¿no?

Yo sólo uso de django.de la plantilla.Yo no explícitamente el uso de cualquier otra parte de django.

Sin embargo, de forma intermitente puedo conseguir uno de estos dos errores:

1) Django se queja de que DJANGO_SETTINGS_MODULE no está definido.
2) se queja de que Django common.html (de una plantilla que me estoy extendiendo en otras plantillas) no existe.

El 95% de las veces, estos errores no son encontrados, y ellos al azar sólo comienzan a suceder.Una vez en ese estado, el servidor local parece "cuña" y vuelve a arrancar generalmente se arregla.

Cuál es la causa de que esto suceda, y lo que puedo hacer al respecto?¿Cómo puedo mejorarlo?

Aquí está la traza del error:

Traceback (most recent call last):
  File "C:\code\kwbudget\edit_budget.py", line 34, in get
    self.response.out.write(t.render(template.Context(values)))
  File "C:\code\kwbudget\django\template\__init__.py", line 165, in render
    return self.nodelist.render(context)
  File "C:\code\kwbudget\django\template\__init__.py", line 784, in render
    bits.append(self.render_node(node, context))
  File "C:\code\kwbudget\django\template\__init__.py", line 797, in render_node
    return node.render(context)
  File "C:\code\kwbudget\django\template\loader_tags.py", line 71, in render
    compiled_parent = self.get_parent(context)
  File "C:\code\kwbudget\django\template\loader_tags.py", line 66, in get_parent
    raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
TemplateSyntaxError: Template u'common.html' cannot be extended, because it doesn't exist

Y edit_budget.py comienza con exactamente las líneas que he incluido en la parte de arriba.

Todas las plantillas de vivir en un directorio llamado "html" en mi directorio raíz, y "html/common.html" existe.Sé que el motor de plantillas que se encuentra, porque empiezo con "html/edit_budget.html" que se extiende common.html.
Parece como si el módulo de configuración de alguna manera no se aplica (porque eso es lo que agrega html a la ruta de búsqueda de plantillas).

¿Fue útil?

Solución

En primer lugar, aunque Django ahora es mucho más compatible con App Engine que una vez, todavía existen algunas incompatibilidades importantes entre las dos plataformas, lo que significa que no puede simplemente descargar una copia de stock de Django en su directorio de Appengine y hacer que funcione de la caja. Las cosas se equivocarán de maneras extrañas.

Hay una serie de proyectos que tienen como objetivo mejorar la compatibilidad entre los dos proyectos, el más destacado es el parche en el motor de la aplicación. Sugiero leer el siguiente artículo http://code.google.com/appengine/articles/app-engine-patch.html y el resto de los artículos ubicados en code.google.com/appengine/articles/ en la pestaña Django.

En cuanto a algunos de sus problemas específicos, puede probar esto dentro de su script de configuración:

#setup django environment
from django.core.management import setup_environ
import settings
setup_envion(settings)

Esto es lo que Django usa internamente para configurar el entorno dentro de Manage.py y es la mejor práctica aceptada para configurar Django para usar con scripts (como el motor de aplicaciones).

Otros consejos

Estoy teniendo exactamente el mismo problema, y no he sido capaz de trabajar alrededor de ella...aunque he notado que me sucede MUCHO menos con el real GAE que con el desarrollo del servidor que tengo en mi estación de trabajo Linux.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top