[Mẹo] Django TemplateTag và Filter - Đoạn mã hữu ích
By JoeVu, at: 15:59 Ngày 29 tháng 8 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes
![[Tips] Django TemplateTag and Filter - Useful Code Snippet](/media/filer_public_thumbnails/filer_public/d8/c4/d8c494f5-6613-4b8a-91ac-b88eded0f5d3/django_templatetag_filter.png__1500x900_crop_subsampling-2_upscale.png)
![[Tips] Django TemplateTag and Filter - Useful Code Snippet](/media/filer_public_thumbnails/filer_public/d8/c4/d8c494f5-6613-4b8a-91ac-b88eded0f5d3/django_templatetag_filter.png__400x240_crop_subsampling-2_upscale.png)
Trong Django, thẻ và bộ lọc template là những công cụ cần thiết để thao tác và hiển thị nội dung động trong các template.
Dưới đây là một số thẻ và bộ lọc template được sử dụng phổ biến nhất
Thẻ và Bộ lọc Tích hợp sẵn
Thẻ Template
- {% for %}: Được sử dụng để lặp qua danh sách, queryset và các dữ liệu lặp khác.
- {% if %}: Câu lệnh điều kiện để hiển thị nội dung dựa trên một điều kiện nhất định.
- {% include %}: Bao gồm nội dung của một file template khác trong template hiện tại.
- {% block %} và {% extends %}: Được sử dụng để tạo và mở rộng tính kế thừa template.
- {% url %}: Tạo URL dựa trên tên view và các tham số của chúng.
- {% csrf_token %}: Xuất token CSRF cho các form.
- {% with %}: Gán giá trị cho một biến trong ngữ cảnh template.
Bộ lọc
- {{ variable|default:"Default Value" }}: Hiển thị giá trị mặc định nếu biến không được định nghĩa.
- {{ variable|length }}: Trả về độ dài của một danh sách, queryset hoặc chuỗi.
- {{ variable|date:"format" }}: Định dạng ngày tháng theo định dạng được chỉ định.
- {{ variable|linebreaks }}: Chuyển đổi ngắt dòng thành ngắt dòng HTML.
- {{ variable|urlize }}: Chuyển đổi URL trong văn bản thành các liên kết nhấp chuột.
- {{ variable|truncatechars:num }}: Cắt ngắn một chuỗi thành một số ký tự được chỉ định.
- {{ variable|lower }}: Chuyển đổi văn bản thành chữ thường.
- {{ variable|upper }}: Chuyển đổi văn bản thành chữ hoa.
- {{ variable|slugify }}: Chuyển đổi văn bản thành một slug an toàn cho URL.
- {{ variable|safe }}: Đánh dấu nội dung là HTML an toàn để ngăn chặn việc thoát.
- {{ variable|floatformat }}: Định dạng một số dấu phẩy động.
Thẻ và Bộ lọc Tùy chỉnh
1. Lấy Phần tử
Một số từ điển có thể có khóa có khoảng trắng, điều này sẽ gây ra nhiều khó khăn khi truy cập các giá trị khóa đó.
def get_item(dict, key):
return dict.get(key, 0)
2. Ẩn Số Điện Thoại
Điều này rất tốt để ẩn dữ liệu nhạy cảm, ví dụ: số điện thoại, email hoặc thông tin thẻ tín dụng
def hide_phone_number(string, member=None):
try:
return '{}***'.format(string[:-3])
except Exception:
return ''
3. Thời Gian Ngày Dễ Đọc
def humanize_timedelta(timedelta_obj):
secs = timedelta_obj.total_seconds()
hours = 0
minutes = 0
seconds = 0
if secs > 3600:
hours = secs // 3600
secs = secs - hours * 3600
if secs > 60:
minutes = secs // 60
secs = secs - minutes * 60
if secs > 0:
seconds = secs
return "%02d:%02d:%02d" % (hours, minutes, seconds)
Chúng ta cũng có thể sử dụng render template để áp dụng một số nội dung html vào template, giống như thẻ và bộ lọc template. Ví dụ:
def boolean_checkbox(value):
if value:
return ''
return ''