2012-04-28 34 views

Trả lời

16

Bạn có thể tự mình làm

from django import template 
from django.template.defaultfilters import stringfilter 

register = template.Library() 

@register.filter 
@stringfilter 
def trim(value): 
    return value.strip() 

Documentation

+12

Bất kỳ ai truy cập vào đây đều nên xem giải pháp của Ibatteau đơn giản hơn rất nhiều - chỉ cần sử dụng .strip trong chính mẫu đó (không cần đăng ký bộ lọc mới). – bryn

+2

Sử dụng '{{var.example.strip}}' thực sự đơn giản hơn, tuy nhiên giải pháp này ở đây cũng được sử dụng. Ví dụ, nó cho phép bạn thực hiện '{% filter trim%} {% someothertag%} {% endfilter%}', điều này không thể thực hiện được. – jlh

77

Django templates phép bạn truy cập các phương pháp và tài sản bằng '' Cú pháp:

{{ var.example.strip }} 

Bạn có thể mở rộng này bằng cách kết nối các bộ lọc khác khi bạn đang làm việc với HTML, ví dụ:

{{ var.example.strip|safe|removetags:"p img" }} 

đây đầu tiên chúng ta loại bỏ bất kỳ <p><img> thẻ, sau đó nói với Django nó có thể an toàn hiển thị phần còn lại của nội dung mà chúng tôi đã loại bỏ bất kỳ khoảng trống nào.

+4

Có phải tài liệu đó là một thủ thuật không chính thức? – Medorator

+3

Nó không phải là chức năng Django, mà là của Python. Tài liệu được ghi ở đây: https://docs.python.org/2/library/stdtypes.html#str.strip. Tài liệu về biến mẫu của Django: https://docs.djangoproject.com/en/dev/ref/templates/language/#variables – maciek

+1

một nhận xét - bộ lọc 'removetags' đang được xóa khỏi django 1.10, vì vậy hãy cẩn thận – Jerzyk

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