2012-06-12 3 views
7

Мое приложение ловит все запросы на url с помощью @app.route, но иногда я сталкиваюсь с плохим URL-адресом, для которого у меня нет соответствующего файла jinja (он соответствует существующему @app.route). Поэтому я хочу перенаправить такие запросы на 404 страницу для этого плохого URL-адреса.Как создать страницу 404?

Как отличить «файл jinja существует» и «файл jinja не существует» перед возвратом render_template()?

ответ

17

Дзиндзя сгенерирует исключение, если шаблон не найден: TemplateNotFound

Так вместо:

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

вы могли бы сделать что-то вроде этого:

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

А затем обрабатывать 404 с пользовательской страницей ошибок, как описано в разделе Flask documentation. Не забудьте импортировать abort от flask и TemplateNotFound от jinja2

+0

Yahoo! Упрощенный расчет! вы правы render_template() действительно возвращено Исключение, если файл jinja не найден. Оно работает. спасибо за ваш крутой ответ. – hof0w

+0

Добавьте к ответу следующий код, пожалуйста. 'из отмены флажков' –

Смежные вопросы