这是我的代码:
checked_ids = request_data["ids"]
for service_id in checked_ids:
if service == "insertion-order"::
IO.modify(id=service_id,data={"state":request_data["state"]},params={"advertiser_id": advertiser_id })
if service == "line-item"::
LI.modify(id=service_id,data={"state":request_data["state"]},params={"advertiser_id": advertiser_id })
if service == "conversion-pixel":
PIXEL.modify(id=service_id,data={"state":request_data["state"]},params={"advertiser_id": advertiser_id })
if service == "segment-pixel":
SEGMENT.modify(id=service_id,data={"state":request_data["state"]},params={"advertiser_id": advertiser_id })
return Response({"Success":"201"})
正如你们所看到的,我正在为所有服务做同样的事情;插入顺序"行项目";等等,但只有最初的几行变化(即"IO"、"LI"、"PIXEL"、"SEGMENT"(,这些基本上是调用的类实例。我只想用一行来代替它,这样只有这个("IO"、"LI"、"PIXEL"、"SEGMENT"(名称改变,即
names = {"insertion-order": IO, "line-item": LI, "conversion-pixel": PIXEl ...}
以及后来的
names[service].modify(id=service_id, data={"state":request_data["state"]}, params={"advertiser_id": advertiser_id })
代替name[service]
,我想要IO或LI等动态值。
定义服务名称insertion-order
、…之间的映射。。。到IO
。。。
service_mapping = {
'insertion-order': IO,
'line-item': LI,
'conversion-pixel': PIXEL,
'segment-pixel': SEGMENT,
}
并使用映射从服务service_id获取类实例。
checked_ids = request_data["ids"]
for service_id in checked_ids:
srv = service_mapping[service_id]
srv.modify(id=service_id,data={"state":request_data["state"]},params={"advertiser_id": advertiser_id })
return Response({"Success":"201"})
注意:您可能需要处理未知的服务id情况。
for service_id in checked_ids:
srv = service_mapping.get(service_id)
if srv is None:
# Unknown service_id!
continue
srv.modify(id=service_id,data={"state":request_data["state"]},params=