Вам нужно go через все итерации вашего l oop и собрать результаты, затем jsonify и вернуть их.
data = []
for r in regions():
api = requests.get("https://localhost:8543/api/netim/v1/regions/{}/cities".format(r), verify=False, auth=HTTPBasicAuth("admin", "admin"))
resolt = api.json()
data.extend([{"name":r.get("name",""),"id":r.get("id", "")} for r in resolt['items']])
return json.dumps(data, indent=4)
Это будет исправление для city()
, но у вас одна и та же проблема во всех ваших функциях. return
немедленно выходит из функции и больше ничего не делает, фактически все ваши for
циклы выполняют одну итерацию.
Я обновлю свой пример здесь, чтобы вы лучше понимали, что происходит.
Ваши функции в основном следующие:
def test_fn():
for i in [1,2,3,4]:
return i
# output:
1
# We never see 2 or 3 or 4 because we return before looping on them.
Что вы хотите:
def test_fn():
results = []
for i in [1,2,3,4]:
results.append(i)
return results
# output
[1,2,3,4]
Похоже, вы понимаете, что for
l oop будет какое-то действие один раз для каждого элемента в списке. Вы не понимаете, что return
завершает функцию СЕЙЧАС. Больше нет для l oop, больше никаких действий, и в вашем коде вы немедленно возвращаетесь внутрь для l oop, останавливая любые дальнейшие действия.