2012-06-12 18 views
7

Mi aplicación capta todas las solicitudes de URL con un @app.route, pero de vez en cuando me encuentro con una URL incorrecta para la que no tengo un archivo jinja coincidente (pero coincide con un @app.route existente). Así que quiero redirigir tales solicitudes a una página 404 para esa URL incorrecta.¿Cómo creo una página 404?

Cómo discriminar entre "existe un archivo jinja" y "no existe un archivo jinja" antes de devolver render_template()?

Respuesta

17

Jinja lanzará una excepción si no se encuentra la plantilla: TemplateNotFound

Así que en lugar de:

def myview(): 
    return render_template(...) 

se podría hacer algo como esto:

def myview(): 
    try: 
     return render_template(...) 
    except TemplateNotFound: 
     abort(404) 

Y luego manejar el Error 404 con una página de error personalizada como se explica en el Flask documentation. No se olvide de importar abort desde flask y TemplateNotFound desde jinja2

+0

Yahoo! tienes razón, render_template() realmente devuelve Excepción si no se encuentra el archivo jinja. Funciona. gracias por tu buena respuesta. – hof0w

+0

Agregue a su respuesta el siguiente código por favor. 'desde el aborto de importación del matraz' –

Cuestiones relacionadas