Django--CRM--一些方法
阿新 • • 發佈:2019-03-18
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--一些方法