python - 在 Python 中处理可选参数
问题描述
我正在尝试解决与我的 api 相关的问题并想重构我的代码以向后工作,我的意思是如果前端没有向我发送我想要的数据,则请求应该通过,如果前端 - end 确实发送,它仍然会照常工作。
所以大致我的创建功能工作正常但是,当前端团队发送的数据没有服务器预期它确实会因 500 内部服务器错误而中断,但我想让它成为可选的,即使没有发送预期的数据,我想要要获得 200 Http 响应,这里是代码中断的地方,因为 job_invoice 上的关键错误。我尝试在我的 for 循环中使用 break 来绕过它.. 但仍然。
job_invoice_data = inv_data['job_invoice']
job_invoice = JobInvoice.objects.create(job=job_instance, **job_invoice_data)
obj.job_invoice = job_invoice
# Create an InvoiceLineItem for each element in invoice_line_item
for invoice_line_item in inv_data['invoice_line_item']:
invoice_line_item['job_invoice'] = job_invoice.id
if invoice_line_item['job_invoice'] is None:
break
invoice_line_item_serializer = InvoiceLineItemSerializer(data=invoice_line_item)
if invoice_line_item_serializer.is_valid():
invoice_line_item_obj = invoice_line_item_serializer.save()
else:
logger.debug("Couldn't create invoice line item: {}".format(invoice_line_item))
解决方案
简单的解决方案:使用 Try 和 Catch 块
try:
#Parse all parameters here
except:
pass
更复杂:
检查参数的可用性并仅在可用时继续,但使用默认值 none。
例如,在 Flask 中,您可以执行以下操作:
@app.route("/func/<required_param>", defaults={"opt1": None, "opt2": None,"opt3": None})
推荐阅读
- javascript - js中的背景图像渐变变化不起作用
- sql - 如果删除列,有什么方法可以阻止视图失败?
- cube - Kylin Build Cube 有时在“#19 Step Name: Hive Cleanup”处失败 java.lang.RuntimeException: 无法读取 kylin_hive_conf.xml
- apache-nifi - LogAttirbute 处理器中的日志前缀属性
- php - 如何从 JSON 获取日期(Ymd His)
- authentication - 如何从客户端移动应用程序获得对特定 Google Cloud Storage 存储桶的短期访问权限?
- c++ - 警告:变量未初始化
- python - 内核密度估计必须保存哪些参数才能稍后重新加载?
- android - 如何更改 xml 中用户输入的颜色?
- xml - 如何在 xml 文件中添加 n 个节点?