Tôi nhận thấy có bộ lọc add
được tích hợp sẵn nhưng tôi không thể tìm thấy divide
.Có bộ lọc để chia cho Mẫu Django không?
Tôi mới sử dụng Django và không chắc liệu có bộ lọc như vậy hay không.
Tôi nhận thấy có bộ lọc add
được tích hợp sẵn nhưng tôi không thể tìm thấy divide
.Có bộ lọc để chia cho Mẫu Django không?
Tôi mới sử dụng Django và không chắc liệu có bộ lọc như vậy hay không.
Không có. Nhưng nếu bạn là một hacker chút ....
http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/
để tính toán A * B: {% widthratio A 1 B%}
để tính A/B: {% widthratio AB 1%}
để tính A^2: {% widthratio A 1 A%}
để tính toán (A + B)^2: {% widthratio A | thêm: B 1 A | thêm: B% }
để tính toán (A + B) * (C + D): {% widthratio A | thêm: B 1 C | thêm: D%}
Ngoài ra bạn có thể tạo một bộ lọc để phân chia trong vòng 2 phút
Kiểm tra http://djangosnippets.org/snippets/2424/
Hy vọng sẽ giúp bạn.
sử dụng một bộ lọc tùy chỉnh:
register = template.Library()
@register.filter
def divide(value, arg):
try:
return int(value)/int(arg)
except (ValueError, ZeroDivisionError):
return None
Bạn nên quản lý trường hợp số nổi, nó có thể hữu ích một thời gian :-) –
Nó có thể chia cho số không, vì vậy tôi sẽ đề nghị: 'def divide (value, arg): return (int (value)/int (arg)) nếu int (arg)! = 0 else 0 ' – jobima
tôi sẽ sử dụng một mẫu tùy chỉnh, nhưng nếu bạn không muốn để bạn có thể sử dụng widthratio xây dựng trong thẻ,
{% widthratio request.session.get_expiry_age 3600 1 %}
e khác xample
{% widthratio value 1150000 100 %}
Cú pháp:
{% widthratio parm1 parm2 parm3 %}
Vì vậy, về cơ bản nó được sử dụng để mở rộng hình ảnh, nhưng bạn có thể sử dụng nó cho phép chia. Những gì nó làm là: parm1/parm2 * parm3.
Hy vọng điều này sẽ giúp, nhiều hơn về widthratio here.
Có một mô-đun Python để thực hiện các phép toán trong các mẫu của bạn: Django-Mathfilters.
Nó chứa add
như bạn nói, mà còn div
chia:
8/3 = {{ 8|div:3 }}
Đó là việc sử dụng thú vị của thẻ widthratio, nhưng nó chắc chắn có thể rời khỏi một ai đó gãi đầu của họ cố gắng tìm ra những gì nó làm, imo. – Brandon
Cảm ơn. Nhưng điều này cho 'Caught TypeError trong khi rendering: float() đối số phải là một chuỗi hoặc một số' lỗi cho một số số – Sam
Boo liên kết bị hỏng –