Question

J'utilise l'environnement de développement de lancement de Windows pour Google App Engine.

J'ai téléchargé la source Django 1.1.2, et non tarrred le "django" sous-répertoire de vivre dans mon répertoire d'applications (un pair de app.yaml)

En haut de chaque fichier source .py, je fais ceci:

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

Dans mon fichier settings.py (qui vit à la racine du répertoire d'applications, aussi bien), je fais ceci:

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

Oui, cela ressemble un peu exagéré, non?

Je n'utilise que django.template. Je ne l'utilise explicitement toute autre partie de django.

Cependant, par intermittence, je reçois une des deux erreurs:

1) Django se plaint que DJANGO_SETTINGS_MODULE n'est pas défini.
2) Django se plaint que common.html (un modèle j'extension dans d'autres modèles) n'existe pas.

95% du temps, ces erreurs ne sont pas rencontrés, et ils ont juste commencer au hasard qui se passe. Une fois dans cet état, le serveur local semble « calée » et re-démarrage, il corrige ce problème en général.

Qu'est-ce qui cause que cela se produise, et que puis-je faire? Comment puis-je déboguer même il?

Voici le retraçage de l'erreur:

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

Et commence edit_budget.py avec exactement les lignes que j'inclus en haut.

Tous les modèles vivent dans un répertoire nommé « html » dans mon répertoire racine et « html / common.html » existe. Je sais que le moteur de modèle les trouve, parce que je commence avec « html / edit_budget.html » qui étend common.html.
Il semble que si les paramètres du module est en quelque sorte pas appliqué (parce que ce code html à l'ajoute chemin de recherche pour les modèles).

Était-ce utile?

La solution

Tout d'abord, bien que django est maintenant beaucoup plus compatible avec le moteur de l'application que par le passé, certaines incompatibilités majeures existent encore entre les deux plates-formes, ce qui signifie que vous ne pouvez pas jeter juste une copie du stock de django dans votre répertoire AppEngine et avoir travailler hors de la boîte. Les choses vont d'erreur de façon étrange.

Il y a un certain nombre de projets visant à améliorer la compatibilité entre les deux projets, le plus important est app-patch moteur. Je suggère fortement de lire l'article suivant http://code.google.com /appengine/articles/app-engine-patch.html et le reste des articles situés à code.google.com/appengine/articles/ sous l'onglet django.

comme pour certains d'entre vous êtes des problèmes spécifiques, vous pouvez essayer cela dans votre script de configuration:

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

est ce que django utilise en interne pour la mise en place de l'environnement dans manage.py et est la meilleure pratique acceptée pour la mise en place django pour une utilisation avec des scripts (comme moteur de l'application).

Autres conseils

Je vais avoir exactement le même problème, et je ne l'ai pas été en mesure de travailler autour d'elle ... même si je l'ai remarqué, il arrive beaucoup moins avec le vrai GAE qu'il fait avec le serveur de développement je cours sur mon poste de travail Linux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top