【超详细Django网站开发过程5】便利店管理系统之——销售员过滤查询顾客信息

有的时候,我们便利店的销售员不需要获取所有顾客的信息。比如销售员需要通过知道顾客电话号码来获取顾客的VIP等级以便给顾客打折。这时候,我们就要用到过滤查询了。

流程:当销售员在浏览器输入 /sales/customers/?phonenumber=12344444444 ,要求服务器返回电话为12344444444顾客的vip等级。(数据库建立之初,我将vip划分了三六九等,vip=1→超级vip打7折;vip=2→尊贵vip打8折;vip=3普通vip打9折)

def listcustomers(request):
    qs = Customer.objects.values()
    #查看url链接中有没有phonenumber这个字段,有就返回字段,没有就返回None
    findpn = request.Get.get('phonenumber',None)   #注意,我这里Get写错了,应该是GET
    if findpn:
        qs = qs.filter(phonenumber=findpn)
    # 定义返回字符串
    retStr = ''
    for customer in  qs:
        for name,value in customer.items():
            retStr += f'{name} : {value} | '
        retStr += '<br>'
    return HttpResponse(retStr)

代码解释:
1、request.Get.get(‘phonenumber’,None):url请求中的所有参数都是放在request.Get对象中的,调用其get方法检查url中是否包含phonenumber。
2、if findpn: qs = qs.filter(phonenumber=findpn)
如果没包含,findpn为None,不执行;如果包含,调用filter参数,在qs这个表中,寻找phonenumber=findpn的那一条客户记录。

效果展示:
在浏览器中输入请求电话号码为12344444444用户的信息:http://127.0.0.1/sales/customers/?phonenumber=12344444444
报错如下:说’WSGIRequest’ object has no attribute ‘Get’,检查GET大小写,发现果然写错了。
错误写法——findpn = request.Get.get('phonenumber',None)
正确写法——findpn = request.GET.get('phonenumber',None)
在这里插入图片描述
修改之后,我们准确地找到了该电话号码所有者的信息。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yljwhat/article/details/107795226