通常,使用白名单更安全可靠。下面是一个示例,如何使用白名单来处理查询参数:
def get_data(request):
# 定义可允许的参数
allowed_params = ['id', 'name', 'category']
# 获取查询参数
query_params = request.GET
# 检查查询参数是否包含非法参数
for param in query_params:
if param not in allowed_params:
return HttpResponseBadRequest("Illegal query parameter: %s" % param)
# 将允许的参数传递给查询
data = MyModel.objects.filter(**query_params)
return JsonResponse(data)
这将确保您的API仅接受预期的查询参数。尽管这样可能需要更多的工作来确保所有需要的参数都在白名单中,但它提供了更好的控制和安全性。