2012-01-31 14 views
5

Acabo de crear mi primera aplicación Bottle.py en GAE. Está funcionando, excepto que cuando cambio las plantillas tengo que reiniciar el servidor de desarrollo para ver los cambios. Los documentos dicen que se supone que el caché de plantillas está deshabilitado cuando bottle.debug (Verdadero), y que también se puede llamar a bottle.TEMPLTE.clear(), pero ninguno de los dos funciona. También intenté configurar run (reloader = True) pero eso causa un error. ¿Qué estoy haciendo mal? ¿Bottle.debug() funciona para cualquier otra persona en GAE?Plantillas de caché Bottle.py a pesar de estar en modo de depuración

import bottle 
bottle.debug(True) 
bottle.TEMPLATES.clear() 

@bottle.route('/') 
def index(name='World'): 
    return bottle.template('main') 

bottle.run(server='gae') 

Actualización: En lugar de utilizar bottle.run (servidor = 'gae'), incluí el principal estándar() funcione a mí mismo y ahora funciona.

def main(): 
    app = bottle.default_app() 
    util.run_wsgi_app(app) 

if __name__ == "__main__": 
    main() 
+0

Ha intentado modificar el archivo bottle.py usar 'logging.info (...)' escribir en los registros de la valor de DEBUG global cuando se llama 'template (...)'? – philofinfinitejest

+0

Dice "Falso" ... – arkanciscan

Respuesta

0

El método estándar introducido por la botella/GAE documento es:

app = bottle.app()

luego invoque dev_appserver.py, se lee app.yaml e importar su aplicación desde el script que ha definido, y manejar todo lo demás para una Entorno GAE.

No debe ejecutar su .py directamente. Al ejecutar desde la forma de botella, se omitirán los identificadores de dev_appserver, incluido el mecanismo de caché de la plantilla. Por supuesto, usar el util de Google truco y funciona, pero de acuerdo con uwsgi u otros documentos de proyectos relacionados con wsgi, la variable app en el módulo de script es el objeto que se debe ofrecer para el manejo superior.

0

De la documentación:

Las plantillas se almacenan en caché en la memoria después de la compilación. Las modificaciones realizadas en los archivos de plantilla no tendrán efecto hasta que borre la caché de la plantilla. Llame a bottle.TEMPLATES.clear() para hacerlo. El almacenamiento en caché está deshabilitado en el modo de depuración.

El método run:

bottle.run(debug = True) 

permitirá debuggmode.

La plantilla predeterminada es SimpleTemplate en estable versión 0.11.6.

Puede escribir su propio adaptador para su motor de plantillas favorito o usar uno de los adaptadores predefinidos.Actualmente hay cuatro motores totalmente soportados plantilla:

clase, URL, decorador, render, de función

SimpleTemplate, SimpleTemplate, motor, vista(), plantilla()

MakoTemplate, http://www.makotemplates.org, mako_view(), mako_template()

CheetahTemplate, http://www.cheetahtemplate.org/, cheetah_view(), cheetah_template()

Jinja2Template, http://jinja.pocoo.org/, jinja2_view(), jinja2_template()

>>> Intenta utilizando algún otro motor de plantillas, que el valor predeterminado . < < <

Para utilizar MakoTemplate como su motor de plantilla por defecto, simplemente importar su decorador especializado y hacer que la función:

from bottle import mako_view as view, mako_template as template 

>>> Compruebe que usted no tiene archivos duplicados en las rutas de vista < < <

TEMPLATE_PATH = ['./', './views/'] 

>>> Imprima diccionario plantillas < < <

print bottle.TEMPLATES 
Cuestiones relacionadas