2010-06-25 24 views
14

đã tự hỏi nếu có một cách để kiểm tra nếu biến nằm bên trong danh sách hoặc dict trong django bằng cách sử dụng thẻ và bộ lọc được tích hợp sẵn.Mẫu Django: thử nghiệm nếu biến nằm trong danh sách hoặc dict

Ie: {% if var|in:the_list %}

Tôi không nhìn thấy nó trong các tài liệu, và sẽ cố gắng một cái gì đó tùy chỉnh nếu không muốn nói, nhưng tôi không muốn làm một cái gì đó đã được thực hiện.

Cảm ơn

Trả lời

29

Trong Django 1.2, bạn chỉ có thể làm

{% if var in the_list %} 

như bạn làm trong Python.

Nếu không có, bạn sẽ cần một bộ lọc tùy chỉnh - đó là một ba-liner mặc dù:

@register.filter 
def is_in(var, obj): 
    return var in obj 
+3

danh sách có thể được trong các mẫu như: '{ % nếu var trong ['item1', 'item2', 'item3']%} ' – Sevenearths

+3

@Sevenearths tôi vừa thử và có thể xác nhận rằng, như của Django 1.5.1, danh sách ** không thể ** được xác định trong 'if' tuyên bố như thế. – Patrick

+0

Chúng ta sẽ làm thế nào? – laycat

0

Bạn muốn vượt qua một dấu phẩy tách chuỗi từ mẫu không? Tạo một templatetag tùy chỉnh:

from django import template 
register = template.Library() 

@register.filter 
def in_list(value, the_list): 
    value = str(value) 
    return value in the_list.split(',') 

Sau đó, bạn có thể gọi nó như thế này:

{% if 'a'|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %} 

Nó cũng làm việc với các biến:

{% if variable|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %} 
Các vấn đề liên quan