2012-03-20 3 views
5

Tôi cố gắng để vượt qua một mẫu vào một bộ lọc cắt, một cái gì đó như thế nàyDjango mẫu đi qua một biến mẫu vào bộ lọc cắt

{{ myVariable|cut:"something + templateVariable" }} 

Tôi đã thử:

{{ myVariable|cut:"something"|add:templateVariable }} 

{{ myVariable|cut:"something {{ templateVariable }}" }} 

nhưng chúng không hoạt động.

Điều này có thể thực hiện được không?

Trả lời

8

Nó sẽ làm việc với một biến tạm thời sử dụng with tag:

{% with myFilter="something"|add:templateVariable %} 
    {{ myVariable|cut:myFilter }} 
{% endwith %} 

Hoặc trong Django 1.2 trở lên:

{% with "something"|add:templateVariable as myFilter %} 
    {{ myVariable|cut:myFilter }} 
{% endwith %} 

Add không hỗ trợ nối của chuỗi và int nhưng bạn có thể dễ dàng thực hiện a template filter chuyển đổi thành chuỗi ví dụ:

from django import template 

register = template.Library() 

@register.filter 
def to_unicode(mixed): 
    return unicode(mixed) 

Cho phép biểu mẫu thẻ mẫu như vậy some_int|to_unicode|add:'foo'.

+1

Tôi phát hiện ra nó không hoạt động vì bạn không thể sử dụng bộ lọc 'add' để nối một chuỗi với một biến số nguyên. Tôi chỉ đơn giản là tạo ra một thẻ mẫu khách hàng để đối phó với điều đó và sử dụng mã bạn đã viết để làm cho mọi thứ đơn giản hơn – zentenk