Frage

Ich verwende die Windows Launcher Development -Umgebung für Google App Engine.

Ich habe Django 1.1.2 Source heruntergeladen und das Subdimalektor von "Django" in mein Anwendungsverzeichnis (ein Peer von App.yaml) nicht tarred, um zu leben

In der oberen Stelle in jeder .py -Quelldatei mache ich Folgendes:

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

In meinen Dateieinstellungen.py (die auch im Root des App -Verzeichnisses lebt) mache ich Folgendes:

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

Ja, das sieht ein bisschen wie Overkill aus, nicht wahr?

Ich verwende nur django.template. Ich benutze keinen anderen Teil von Django ausdrücklich.

In zeitweise bekomme ich jedoch einen von zwei Fehlern:

1) Django beschwert sich, dass Django_Setings_Module nicht definiert ist.
2) Django beschwert sich, dass Common.html (eine Vorlage, die ich in anderen Vorlagen ausdehnte) nicht existiert.

In 95% der Fälle treten diese Fehler nicht auf und sie werden zufällig gerade stattfinden. Einmal in diesem Zustand scheint der lokale Server "eingeklemmt" zu sein, und das Neustart von ihm behebt ihn im Allgemeinen.

Was verursacht dies und was kann ich dagegen tun? Wie kann ich es überhaupt debuggen?

Hier ist das Traceback aus dem Fehler:

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

Und edit_budget.py startet mit genau den Zeilen, die ich oben aufgenommen habe.

Alle Vorlagen leben in einem Verzeichnis namens "HTML" in meinem Root -Verzeichnis, und "html/common.html" existiert. Ich weiß, dass die Template -Engine sie findet, da ich mit "html/edit_budget.html" beginne, die Common.html erweitert.
Es sieht so aus, als ob das Einstellungsmodul irgendwie nicht angewendet wird (da dies dem Suchpfad für Vorlagen HTML hinzufügt).

War es hilfreich?

Lösung

Erstens, obwohl Django jetzt viel besser mit App Engine als einmal kompatibel ist, bestehen immer noch einige wichtige Inkompatibilitäten zwischen den beiden Plattformen, was bedeutet die Kiste. Die Dinge werden seltsam fehlerhaft sein.

Es gibt eine Reihe von Projekten, die darauf abzielen, die Kompatibilität zwischen den beiden Projekten zu verbessern. Am bekanntesten ist das App-Engine-Patch. Ich empfehle dringend, den folgenden Artikel zu lesen http://code.google.com/appengine/articles/app-gine-patch.html und der Rest der Artikel unter codel.google.com/appengine/articles/ unter der Registerkarte Django.

Bei einigen Ihrer spezifischen Probleme können Sie dies in Ihrem Setup -Skript versuchen:

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

Dies ist das, was Django intern verwendet, um die Umgebung in Manage.Py einzurichten, und ist die akzeptierte Best Practice für die Einrichtung von Django für die Verwendung mit Skripten (wie App Engine).

Andere Tipps

Ich habe genau das gleiche Problem und ich konnte nicht umgehen ... obwohl ich festgestellt habe .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top