2011-05-12 27 views
7

Từ các tài liệu Django,Có default_if_none có bất kỳ sử dụng nào trong các mẫu Django không?

Thông thường, nếu một biến không tồn tại, hệ thống mẫu chèn giá trị của các thiết lập TEMPLATE_STRING_IF_INVALID, được thiết lập để '' (chuỗi rỗng) theo mặc định.

Bộ lọc được áp dụng cho biến số không hợp lệ sẽ chỉ được áp dụng nếu TEMPLATE_STRING_IF_INVALID được đặt thành '' (chuỗi trống). Nếu TEMPLATE_STRING_IF_INVALID được đặt thành bất kỳ giá trị nào khác, bộ lọc biến sẽ bị bỏ qua.

Hành vi này hơi khác nhau để có, lấy và lấy lại mẫu thẻ. Nếu biến không hợp lệ là được cung cấp cho một trong các mẫu mẫu này, biến sẽ được hiểu là là Không. Bộ lọc luôn được áp dụng cho các biến số không hợp lệ trong các thẻ mẫu này.

Nếu một biến không hợp lệ luôn được dịch sang '', cho mẫu thẻ và các bộ lọc khác hơn nếu, chotập hợp lại, sau đó những gì tốt không mẫu lọc default_if_none làm gì? Lỗi thời?

Trả lời

11

Có sự khác biệt giữa biến không hợp lệ và biến tồn tại nhưng có giá trị là None.

xem xét bối cảnh sau đây:

{'apple':'green','banana':None}` 

Trong mẫu của bạn {{ apple }} quyết tâm green, trong khi {{ banana }} quyết tâm None, và {{ orange }} quyết tâm TEMPLATE_STRING_IF_INVALID.

Bây giờ, hãy xem xét {{ banana|default_if_none:'yellow' }} và bạn sẽ thấy việc sử dụng thẻ default_if_none.

3

Đây là trường hợp tôi đã sử dụng default_if_none một vài lần. Tôi đang truy vấn một cơ sở dữ liệu thứ cấp mà tôi không có quyền kiểm soát và tôi đang hiển thị dữ liệu trong mẫu. Hầu hết các lần dữ liệu có vẻ tốt nhưng đôi khi, giá trị dữ liệu sẽ hiển thị None. Trong trường hợp đó, tôi sẽ sử dụng bộ lọc như:

{{ data_value|default_if_none:"N/A" }} 

Công chúng nói chung và những người dùng của trang web thường không hiểu những gì các phương tiện None giá trị, bằng cách thay thế nó bằng một từ thân thiện hơn, bộ lọc default_if_none do thỏa thuận hợp tiện dụng.

+0

Cẩn thận khi bạn muốn tham gia nhiều hơn một bộ lọc. Ví dụ: 'value | upper | default_if_none:" - "' không hoạt động, bạn nên đặt: 'value | default_if_none:" - "| upper' – Virako

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