2012-06-12 39 views
7

Ứng dụng của tôi bắt tất cả yêu cầu url với @app.route, nhưng đôi khi tôi gặp phải một url không hợp lệ mà tôi không có tệp jinja phù hợp (bu nó khớp với @app.route hiện có). Vì vậy, tôi muốn chuyển hướng các yêu cầu đó đến trang 404 cho url xấu đó.Làm cách nào để tạo trang 404?

Cách phân biệt giữa "tệp jinja tồn tại" và "tệp jinja không tồn tại" trước khi trở về render_template()?

Trả lời

17

Jinja sẽ ném một ngoại lệ nếu mẫu không được tìm thấy: TemplateNotFound

Vì vậy, thay vì:

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

bạn có thể làm một cái gì đó như thế này:

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

Và sau đó xử lý Lỗi 404 với trang lỗi tùy chỉnh như được giải thích trong Flask documentation. Đừng quên nhập abort từ flaskTemplateNotFound từ jinja2

+0

Yahoo! bạn đúng render_template() thực sự trả về ngoại lệ nếu không tìm thấy tập tin jinja. Nó hoạt động. cảm ơn vì câu trả lời tuyệt vời của bạn. – hof0w

+0

Thêm vào câu trả lời của bạn sau mã xin vui lòng. 'từ việc ngừng nhập khẩu bình' –

Các vấn đề liên quan