Domanda

Sto usando l'ambiente di sviluppo di Windows Launcher per Google App Engine.

Ho scaricato Django 1.1.2 fonte, e non-tarrred sottodirectory "Django" di vivere all'interno della mia directory dell'applicazione (un peer di app.yaml)

Nella parte superiore di ogni file sorgente .py, faccio questo:

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

Nel mio settings.py file (che vive alla radice della cartella app, pure), faccio questo:

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ì, questo sembra un po 'come eccessivo, non è vero?

Io uso solo django.template. Io non uso esplicitamente qualsiasi altra parte del Django.

Tuttavia, a intermittenza ottengo uno dei due errori:

1) Django lamenta che DJANGO_SETTINGS_MODULE non è definito.
2) Django lamenta che common.html (un modello che sto estendendo in altri modelli) non esiste.

95% del tempo, questi errori non sono incontrato, e che in modo casuale solo iniziare accadendo. Una volta in quello stato, il server locale sembra "incastrato" e ri-avvio generalmente correzioni di esso.

Che cosa sta causando questo accada, e che cosa posso fare? Come posso anche eseguire il debug di esso?

Questa è la traceback da l'errore:

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

e edit_budget.py inizia con esattamente le linee che ho incluso sulla parte superiore.

Tutti i modelli vivono in una directory chiamata "html" nella mia directory root, e "html / common.html" esiste. So che i reperti motore di template di loro, perché comincio con "html / edit_budget.html" che si estende common.html.
Sembra come se le impostazioni del modulo in qualche modo non è applicata (perché è quello che aggiunge html al percorso di ricerca per i modelli).

È stato utile?

Soluzione

In primo luogo, anche se Django è ora molto più compatibile con il motore di applicazione di una volta, esistono ancora alcuni importanti incompatibilità tra le due piattaforme, il che significa che non si può semplicemente scaricare un copia stock di Django nella directory di AppEngine e lo hanno lavorare fuori dalla scatola. Le cose errore in modi strani.

Ci sono una serie di progetti volti a migliorare la compatibilità tra i due progetti, il più importante è app-motore-patch. Consiglio vivamente la lettura del seguente articolo http://code.google.com /appengine/articles/app-engine-patch.html e il resto degli articoli situati code.google.com/appengine/articles/ sotto la scheda Django.

Per quanto riguarda alcuni dei sei problemi specifici, si potrebbe provare questo all'interno del tuo script di installazione:

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

questo è ciò che Django utilizza internamente per impostare l'ambiente all'interno manage.py ed è la migliore pratica accettata per la creazione di Django per l'uso con gli script (come App Engine).

Altri suggerimenti

Sto avendo esattamente lo stesso problema, e non sono stato in grado di lavorare intorno ad esso ... anche se ho notato che succede molto meno con il reale GAE di quanto non faccia con il server di sviluppo corro su la mia workstation Linux.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top