2012-09-09 26 views
12

Tôi gặp vấn đề nhỏ khi hiểu biểu thức như {{ something.render() | safe }}.Từ khóa an toàn Jinja 2

Từ những gì tôi đã thấy, không có từ khóa safe, nó xuất ra toàn bộ tài liệu html, không chỉ nội dung thực.

Điều tôi muốn biết, là những gì nó thực sự làm, cách hoạt động của nó.

Trả lời

12

Bộ lọc safe đánh dấu rõ ràng một chuỗi là "an toàn", tức là, bộ lọc không được tự động thoát nếu tự động thoát được bật.

Tài liệu về bộ lọc này là here.

Xem phần trên manual escaping để xem các ký tự nào đủ điều kiện để thoát.

15

Thông thường văn bản được HTML thoát (vì vậy <b> sẽ được viết thành &lt;b&gt;, sẽ hiển thị là <b>).

Khi bạn đặt |safe sau thứ gì đó, bạn đang nói với công cụ mẫu rằng bạn đã tự thoát khỏi văn bản, tức là "an toàn để hiển thị trực tiếp". Vì vậy, nó sẽ không làm điều đó mã hóa cho bạn.

Để biết thêm thông tin: http://jinja.pocoo.org/docs/templates/#html-escaping

4

Đối với bất cứ ai đến đây tìm cách để sử dụng bộ lọc an toàn theo chương trình: bọc nó trong một lớp markupsafe.Markup, trên đó Jinja2 phụ thuộc vào.

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