Theo như tôi thấy, không có cách nào để kiểm tra xem một đối tượng có phải là một thể hiện danh sách trong Jinja2 hay không. Thứ nhất, đó là chính xác và thứ hai, có ai thực hiện một thử nghiệm tùy chỉnh/mở rộng trong Jinja2? Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời.Kiểm tra danh sách trong Jinja2
Trả lời
Bạn có thể dễ dàng thực hiện việc này làm trắng bộ lọc tùy chỉnh trong jinja2.
Đầu tiên tạo bạn phương pháp thử nghiệm:
def is_list(value):
return isinstance(value, list)
Và thêm nó như một bộ lọc tùy chỉnh:
j = jinja2.Jinja2(app)
j.environment.filters.update({
'is_list': is_list,
})
Jinja có nhiều thử nghiệm được xây dựng trong. Có thể bạn đang tìm kiếm iterable.
{% if var is iterable %}
tôi đã làm nó như thế này {% if var is iterable and var is not string %}
trong trường hợp của tôi '{% if var là string%}' hoạt động hoàn hảo; cảm ơn bạn. – berto
Trong thiết lập của tôi, tôi muốn cho một giá trị cho một trong hai là một chuỗi hoặc danh sách các chuỗi đi vào mẫu Jinja. Vì vậy, thực sự những gì tôi quan tâm không phải là chuỗi vs danh sách, nhưng mục duy nhất so với nhiều mục. Câu trả lời này có thể hữu ích nếu trường hợp sử dụng của bạn tương tự.
Vì không có thử nghiệm tích hợp cho "danh sách?" cũng từ chối các chuỗi, tôi đã mượn một mẫu từ thiết kế API và gói các đối tượng đơn lẻ vào một danh sách ở phía Python rồi kiểm tra độ dài danh sách đã chọn ở phía Jinja.
Python:
context = { ... }
# ex. value = 'a', or ['a', 'b']
if not isinstance(value, list):
value = [value]
context['foo'] = value
Jinja:
{% if foo|length == 1 %}
single-item list
{% elif foo|length > 1 %}
multi-item list
{% endif %}
Và nếu tất cả các bạn muốn làm là thêm một dấu phân cách hàng cho mục đích hiển thị, bạn có thể bỏ qua việc kiểm tra chiều dài rõ ràng và chỉ {{ value|join(', ') }}
.
Có vẻ như câu trả lời này đã nhận được phiếu giảm giá vì một lý do nào đó. Nó hoạt động tốt cho tôi, nhưng cảm thấy tự do để thêm một bình luận nếu một cái gì đó không làm việc cho bạn. –
- 1. Mẫu Python jinja2, cách đếm danh sách
- 2. kiểm tra loại biến bên trong Jinja2 trong Flask
- 3. vulnerabilies an danh sách kiểm tra
- 4. Làm cách nào để sắp xếp danh sách trong Jinja2?
- 5. Kiểm tra xem một mảng có trống không trong Jinja2
- 6. kiểm tra sự hiện diện trong danh sách mẫu django
- 7. Kiểm tra biến nếu nó nằm trong danh sách
- 8. Cách kiểm tra danh sách rỗng trong freemarker
- 9. Kiểm tra xem đối tượng có phải là danh sách các danh sách trong python không?
- 10. Thêm hạn ngạch xung quanh mỗi chuỗi trong danh sách trong jinja2?
- 11. Kiểm tra xem mục danh sách chứa các mục từ danh sách khác
- 12. Thực hiện kiểm tra trước khi khởi tạo danh sách
- 13. Cách kiểm tra danh sách đá quý trên heroku
- 14. Kiểm tra xem danh sách chỉ chứa mục x
- 15. Danh sách kiểm tra cho thread-safe java trên appengine
- 16. Tìm danh sách các bài kiểm tra rspec chậm
- 17. Python - kiểm tra trên một sợi/xóa khỏi danh sách
- 18. Kiểm tra xem danh sách đỉnh có chứa đối tượng
- 19. Kiểm tra xem danh sách có trống không với LINQ
- 20. Kiểm tra xem danh sách có chứa danh sách khác với Python
- 21. Kiểm tra xem danh sách <t> chứa bất kỳ một danh sách khác
- 22. Haskell: kiểm tra xem danh sách có chứa "danh sách con" cụ thể
- 23. Đảm bảo danh sách kiểm tra ứng dụng ASP.NET MVC
- 24. Kiểm tra int hoặc danh sách <int>
- 25. C# Danh sách <T> Chứa kiểm tra
- 26. Làm cách nào để kiểm tra xem tất cả các mục trong danh sách có trong danh sách khác không?
- 27. .NET có cách kiểm tra xem Danh sách chứa tất cả các mục trong Danh sách b không?
- 28. Lập trình Kiểm tra một mục trong Danh sách kiểm tra nơi văn bản bằng với những gì tôi muốn
- 29. Làm thế nào để truy cập vào một phần của một danh sách trong Jinja2
- 30. kiểm tra nếu chuỗi trong cột dataframe gấu trúc có trong danh sách
Một chuỗi cũng có thể lặp lại, do đó sẽ không hoạt động – pors
Tôi cũng nhận thấy thử nghiệm 'chuỗi' nhưng cũng xem xét chuỗi một chuỗi. –