2010-08-14 40 views
36

Tôi đang cố gắng xuất 255 ký tự đầu tiên của mô tả trên danh sách các mục và đang tìm kiếm một phương thức để nhận được.Giới hạn số ký tự với bộ lọc Mẫu Django

Ví dụ: Tôi có biến chứa 300 ký tự trở lên.

Tôi gọi đó là biến như thế này, {{ my_variable|characterlimit:255 }}

và nó sẽ quay trở lại chỉ có 255 ký tự đầu tiên của biến đó.

Nếu thẻ này không tồn tại, tôi sẽ chỉ đơn giản là tạo ra nó (và cho rằng nó đi vào django), nhưng tôi muốn chắc chắn rằng nó đã không trước khi tôi dành thời gian để làm điều đó. Cảm ơn!

Trả lời

62

Nếu "my_variable" là một chuỗi, bạn có thể tận dụng lợi thế của slice filter, xử lý chuỗi dưới dạng danh sách các ký tự. Nếu đó là một tập hợp các từ, phần cân bằng thô là truncatewords - nhưng điều đó không hoàn toàn giống với nhu cầu của bạn.

truncatewords cũng thêm dấu chấm lửng ... vào cuối kết quả cắt ngắn.

Cách sử dụng sẽ là một cái gì đó giống như

{{ my_variable|slice:":255" }} 
+0

tôi không thể có được điều này để làm việc cho một chuỗi – northben

0

Nó không tồn tại. Có những động thái để thực hiện nó, nhưng nó vẫn còn trong giai đoạn thiết kế (tốt, thực hiện, nhưng chờ đợi quyết định thiết kế), như mô tả here.

Bản vá được gắn với vé đó có chứa triển khai.

2

Một cách đơn giản hơn này bằng cách sử dụng các mẫu thẻ giữa các ý kiến:

{{ variable|stringformat:".10s" }} 

Trong trường hợp này, 10 là đối số vị trí và chuỗi là số ký tự tối đa được hiển thị.

29

Có một official built-in filter:

{{ variable|truncatechars:255 }} 
+0

Điều này sẽ đặt dấu ba chấm ("...") phía sau các chuỗi được cắt ngắn (và không phải sau những chuỗi không bị cắt ngắn). Slice doe không đặt dấu chấm lửng phía sau nó. Tư vấn của tôi: sử dụng truncatechars. – MZA

+0

Đồng ý với các điều trên. Điều này sẽ đúng trong hầu hết các trường hợp (ví dụ: hiển thị URL dài mà không cản trở siêu kết nối). –

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