Theo số mako docs about filtering, bạn có thể đặt bộ lọc mặc định được áp dụng bên trong các mẫu khi tạo Template
mới cũng như cho TemplateLookup
(trong trường hợp này sẽ được áp dụng theo mặc định cho tất cả các mẫu mà nó trông lên), với đối số default_filters
.
giá treo sử dụng lập luận này với TemplateLookup
để thiết lập giá trị mặc định cho dự án của bạn bên trong config/environment.py
file:
# Create the Mako TemplateLookup, with the default auto-escaping
config['pylons.app_globals'].mako_lookup = TemplateLookup(
directories=paths['templates'],
error_handler=handle_mako_error,
module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
input_encoding='utf-8', default_filters=['escape'],
imports=['from webhelpers.html import escape'])
Đây là lý do tại sao bạn sẽ có được thoát theo mặc định (mà không phải là trường hợp khi bạn sử dụng Mako một mình). Vì vậy, bạn có thể thay đổi nó trên toàn cầu trong tập tin cấu hình, hoặc không dựa vào tra cứu tiêu chuẩn. Hãy cẩn thận rằng bạn nên tất nhiên sau đó sử dụng một bộ lọc một cách rõ ràng để thoát khỏi những điều cần thoát.
Bạn cũng có thể vượt qua một chuỗi "đánh dấu là an toàn" với helper giá treo h.literal
, ví dụ nếu bạn sẽ vượt qua h.literal('This will <b>not</b> be escaped')
để mẫu, nói như là một biến tên là spam
, bạn chỉ có thể sử dụng ${spam}
mà không thoát.
Nếu bạn muốn tác dụng tương tự khi bạn gọi một hàm nhất định từ bên trong mẫu, hàm này sẽ cần trả về một chữ hoặc cung cấp trợ giúp cho hàm đó gọi h.literal
nếu bạn muốn thoát khỏi chức năng ban đầu một mình. (hoặc tôi đoán bạn cũng có thể gọi nó thông qua một "Lọc def" (xem cùng một tài liệu Mako như trên), chưa thử nghiệm với điều đó chưa)
Điều này phải đi vào "lớp" được trả về bởi 'h.some_function_that_outputs_html()' Tôi giả sử. – Felix