Tôi có tệp jinja_filters.py với một vài chục bộ lọc tùy chỉnh mà tôi đã viết. Bây giờ tôi có nhiều ứng dụng Flask cần sử dụng các bộ lọc này. (Tôi không chắc chắn nếu vấn đề của tôi là Flask cụ thể hay không.)Làm cách nào để nhập các bộ lọc jinja2 tùy chỉnh từ một tệp khác (và sử dụng Flask)?
Một cách hacky để hoàn thành những gì tôi muốn là để làm:
app = Flask(__name__)
import jinja_filters
@app.template_filter('filter_name1')
def filter_name1(arg):
return jinja_filters.filter_name1(arg)
@app.template_filter('filter_name2')
def filter_name2(arg):
return jinja_filters.filter_name2(arg)
...
"quyền" cách để làm điều này là gì?
EDIT: Lý tưởng nhất, tôi sẽ không phải liệt kê từng tên bộ lọc. Vì vậy, khi tôi thêm một bộ lọc mới vào jinja_filters.py tôi không phải cập nhật bất kỳ mã nào khác - tất cả các ứng dụng của tôi sẽ có thể sử dụng nó ngay lập tức.
Đó chắc chắn là tốt hơn những gì tôi có. Nhưng có cách nào mà tôi không phải liệt kê rõ ràng từng tên bộ lọc? –
Tôi đã cập nhật câu trả lời của mình bằng một giải pháp khác có thể tự động thêm bộ lọc bằng mô-đun 'kiểm tra'. – aezell
Vâng, nó được hoàn thành công việc ổn :) Nhưng tôi vẫn không thể tin rằng các tác giả của Jinja2/Flask đã không có một cách gọn gàng hơn để làm điều này. (Tôi sẽ đánh dấu câu trả lời của bạn trong một vài ngày nếu không có ai khác chimes in.) –