フロントページには、データを検索するための入力ボックスがいくつかあります。ユーザーは必要に応じて検索条件を入力してバックエンドに送信できます。その後、バックエンドは条件に従ってクエリを実行して戻ります。
データを見つけると、フィルター(** dict)クエリメソッドがORMクエリで見つかることがわかったため、次のクエリを使用できます。
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