2012-06-12 17 views
7

La mia applicazione intercetta tutte le richieste di url con un @app.route, ma occasionalmente mi imbatto in un brutto url per il quale non ho file jinja corrispondente (bu corrisponde a uno esistente @app.route). Quindi voglio reindirizzare tali richieste a una pagina 404 per quel brutto URL.Come si crea una pagina 404?

Come distinguere tra "un file jinja esiste" e "un file jinja non esiste" prima di restituire render_template()?

risposta

17

Jinja un'eccezione se il modello non è stato trovato: TemplateNotFound

Così, invece di:

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

si potrebbe fare qualcosa di simile:

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

E poi gestire il Errore 404 con una pagina di errore personalizzata come spiegato nello Flask documentation. Non dimenticare di importare abort da flask e TemplateNotFound da jinja2

+0

Yahoo! hai ragione render_template() ha davvero restituito Eccezione se il file jinja non è stato trovato. Funziona. grazie per la tua bella risposta – hof0w

+0

Aggiungi alla tua risposta il seguente codice per favore. 'dall'importazione dell'importatore di boccette' –

Problemi correlati