首页 > 其他 > 详细

Django--CRM--一些方法

时间:2019-03-17 22:11:12      阅读:227      评论:0      收藏:0      [点我收藏+]

一 . 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--一些方法

原文:https://www.cnblogs.com/attila/p/10549076.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!