前端页面有几个输入框用于搜索数据。用户可以按需填入搜索条件传给后台,后台再按条件查询返回。
查找资料发现orm查询中可以有filter(**dict)这种查询方式,所以有以下查询。
def search_stu_info(request):
argument = _getArguments(request)
try:
name = argument.get("name", "")
class_id = argument.get("class_id", "")
sno = argument.get("sno", "")
kwargs = {}
if name:
kwargs["name__contains"] = name
if class_id:
kwargs["class_id"] = class_id
if sno:
kwargs["son"] = sno
stu = Student.objects.filter(**kwargs)
data = []
for i in stu:
data.append(model_to_dict[i])
returnDict = {
'count': len(data), # 总数据量
'data': json.dumps(data), # 显示的数据
'state': 200,
'msg': "success"
}
return JsonResponse(returnDict, json_dumps_params={'ensure_ascii': False})
except Exception as e:
traceback.print_exc()
return JsonResponse({"state": 500, "msg": "系统出错,请联系管理员", "errMsg": str(e)},json_dumps_params={'ensure_ascii': False})
def _getArguments(request):
# 获取请求参数
if request.method == 'GET':
logging.error("收到GET请求")
arguments = dict(request.GET)
for arg in arguments:
if type(arguments[arg]) == type([]):
arguments[arg] = arguments[arg][0]
else:
logging.error("收到POST请求")
logging.error("post-body")
logging.error(request.body.decode())
if "form" in request.content_type:
arguments = request.POST
else:
arguments = json.loads(request.body.decode())
return arguments