替换变量值



这是我的代码:

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=

最新更新