1. 程式人生 > >Django--CRM--一些方法

Django--CRM--一些方法

amp bubuko next eve 怎麽 url 來看 原因 request

一 . QueryDict的修改

# QueryDict正常是不允許修改的,要想往裏面添加內容,需要另mutable=True
dic = request.GET
print(dic)   # <QueryDict: { ‘query‘ : [‘12‘]}>
dic._mutable=True   # 這種的需要加上下劃線
dic[key] = value    # 這樣才可以添加

# 還可以直接實例化,當參數傳過去的時候
from django.http.request import QueryDict
class Base:
    def __init__
(self, params=None) self.params = QueryDict(mutable=True) # 這種也是讓它可以修改 還可以實參是request.GET.copy() # 這是深copy並且可修改 # 當我們需要拿到QueryDict中的數據的時候可以直接dic.urlencode() print(dic.urlencode()) #query=12

二 . 路徑跳轉拼接

  比如說我們在淘寶首頁在沒有登錄的情況下點擊‘我的訂單‘,他會讓你先去登錄,登陸完直接就跳轉到‘我的訂單‘ ,這裏其實就用到了路徑拼接的功能

  我們要想做路徑拼接跳轉需要借助於自定義過濾器來做

from django import template
from django.urls import reverse
from django.http.request import QueryDict
register = template.Library()

# 用這個的原因是可以傳多個參數
@register.simple_tag
def reverse_url(request, url_name, *args, **kwargs ):    
    next = request.get_full_path()   #
拿到的是帶參數的路徑 qd = QueryDict(mutable=True) qd[next] = next base_url = reverse(url_name, args=args, kwargs=kwargs) # next=/crm/customer_list/?query=in&page=2 如果不urlencode 這個&之後的東西會被分割這樣就會丟參數 # urlencode之後 next=%2Fcrm%2Fcustomer_list%2F%3Fquery%3Din%26page%3D2 # 雖然轉換了,但是你去get的時候自己還會變回來的 return %s?%s % (base_url, qd.urlencode())

  下面來看看怎麽用

技術分享圖片

三 . 模糊搜索

  1 . 模糊搜索肯定是要用到上面的request.GET.copy()的,因為我們如果不用會出現條件缺失的情況, 見下圖

  技術分享圖片

  技術分享圖片

  2. 我們在進行模糊搜索的時候需要用到Q查詢

  技術分享圖片

Django--CRM--一些方法