1. 程式人生 > >CRM手記-7 | Django

CRM手記-7 | Django

獲取 生成 str 根據 排序 gpo value for 封裝

# 綜合排序,分頁,過濾展示
    # 即可以排序後,再過濾,又可以過濾後,再排序,最後分頁;
    # 1.在篩選的基礎之上排序
    #     篩選後的參數添加到排序的鏈接中;
        # table_obj_list.html
            {% get_filter_param admin_class %}
        # kingadmin_tag.py
            # 排序鏈接中添加篩選參數,先篩選再排序
            @register.simple_tag
            def get_filter_param(admin_class,):
                filter_param 
= ‘‘ # 根據獲取篩選條件的字典來判斷,是否有篩選 if admin_class.filter_condtions: for k,v in admin_class.filter_condtions.items(): filter_param += &%s=%s%(k,v) return filter_param # 2.在排序的基礎之上篩選 # 將排序參數_o添加到篩選的提交表單;
# 生成一個隱藏標簽;放入當前排序字段; # table_obj_list,html <input type="hidden" name="_o" value="{{ current_order_field.keys.0 }}"> # 因為過濾功能一個提交表單,所以只要將name與value提交上去,就會添加到url中; # 因為在python3中keys()返回的是一個叠代器,而不是列表,所以上面沒有返回值; # 寫一個simple_tag; #
kingadmin_tag.py # 獲取當前排序字段 @register.simple_tag def get_order_field(current_order_field): # 將叠代器轉換成列表,展示的字段名及索引 return list(current_order_field.values())[0] # 排序結果對過濾查詢就影響嗎? # 沒有,只是一個URL上參數展示,表示操作已執行的狀態; # 報錯:list out of range # 原因:默認是沒有排序的,但是值取了; # kingadmin_tag.py @register.simple_tag def get_order_field(current_order_field): # 如果有排序,則返回,沒有就返回空; return list(current_order_field.values())[0] if current_order_field else ‘‘ # 3.註意一點,分頁我們用的是第三方庫pure-pagination,它對django自帶的 # pagination做了一些增強功能的封裝,生成的鏈接{{page.querystring}} # 會自動在其他功能的基礎之上添加參數,與分頁;

CRM手記-7 | Django