django filters實現數據過濾的示例代碼
常用
當前循環. | 作用 |
---|---|
default | 數據為空時設置默認值 |
length | 取變量長度 |
filesizeformat | 文件大小轉成可讀 |
slice | 從指定位置到指定位切片 |
date | datetime取到的時間,轉成指定格式 |
safe | 防止XSS攻擊、加上safe才能傳標簽 |
truncatechars | 取摘顯示一段剩下的… |
例子
{#格式 值|函數#} {# 如果沒有值,那麼使用默認值#} <p>{{ bucunzai|default:'空的哦' }}</p> {# 取出變量長度#} <q>{{ name }}--{{ name|length }}</q> {# 文件大小轉換成可讀型 kb 自動轉成bm、g、tb#} <p>文件大小{{ file_size|filesizeformat }}</p> {# 切片 從指定位置到指定位 ,例:第3位到-2位#} <p>切片:{{ slice_str|slice:'3:-2' }}</p> {# 把datetime取到的時間,轉成指定格式#} <p>格式化:{{ now|date:'Y-m-d H:i:s' }}</p> {# 如果後端內容包含標簽,那麼加上safe 才能轉義(防止用戶直接加script標簽作弊)防XSS攻擊#} <p>{{ h_html|safe }}</p> {# 取摘要隻顯示一段,指定取長度後面...例:120個字符 #} <p>長文本:{{ p_str|truncatechars:12 }}</p>
1、視圖
class UserView(ListAPIView): """用戶列表""" queryset = User.objects.all() serializer_class = UserSerializer filter_backends = (DjangoFilterBackend,) filter_class = UserMonthFilter # 指定過濾類
2、過濾類
class RobotFilter(django_filters.FilterSet): # 使用過濾:URL?created_start_time=2020_01-20&created_end_time=2020_01-21 robot_id = django_filters.CharFilter(field_name='id') machine_id = django_filters.CharFilter(field_name='machine_id') city = django_filters.CharFilter(field_name='city') # lookup_expr(可選)為判斷條件,field_name(必選)為模型類屬性,created_time查詢字符串 created_time= django_filters.CharFilter(field_name='created_at', lookup_expr='startswith') created_start_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='gt') created_end_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='lt') problem_isnull = django_filters.BooleanFilter(field_name='problem', lookup_expr='isnull') name = django_filters.CharFilter(lookup_expr='iexact') # iexact表示精確匹配, 並且忽略大小寫 author = django_filters.CharFilter(lookup_expr='icontains') #icontains表示模糊查詢(包含),並且忽略大小寫 price = django_filters.NumberFilter(look_expr='exact') #exact表示精確匹配 task_res_state = django_filters.CharFilter(method="get_task_res_state") def get_task_res_state(self, queryset, *arg): if str(arg[1]) == "0": # arg[1]=('task_res_state', '0') task_res = (1, 2, 3) else: task_res = (0, 4, 5, 6) print(task_res) queryset = queryset.filter(task_res__in=task_res) return queryset class Meta: model = Robot fields = ['robot_id', 'machine_id', "city", "created_start_time", "created_end_time", 'created_time', 'firmware_version', 'state', "robot_type", "hardware_version", "exist_map", 'task_res_state']
到此這篇關於django filters實現數據過濾的示例代碼的文章就介紹到這瞭,更多相關django filters 數據過濾 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Django實現drf搜索過濾和排序過濾
- django模型查詢操作的實現
- Django ORM 多表查詢示例代碼
- Django中常用的查詢數據方法及查詢對象的條件詳解
- Python編程使用有限狀態機識別地址有效性