gpt4 book ai didi

python - 在django中使用for循环迭代另一个url

转载 作者:行者123 更新时间:2023-12-01 00:53:56 27 4
gpt4 key购买 nike

我正在设置一个按钮,将 API 数据保存到我的数据库中,并且我正在尝试找到一种方法来获取每个产品的描述,但它们不包含在按城市获取所有产品的主网址中: (https://www.test-headout.com/api/public/v1/product/listing/list-by/city?cityCode=BARCELONA&limit=5000&language=fr),仅在以下情况下才包含在内:我们使用此链接通过其 id 调用产品:(https://www.test-headout.com/api/public/v1/product/get/508 )。

因此,建议我首先使用 Listing API 来获取所有产品。迭代列表并获取 id 并点击 product/get API 获取描述。

这是我到目前为止所尝试过的,但我不知道如何进行迭代部分:

我的 Django 观点:

def api_data(request):
response = requests.get("https://www.test-headout.com/api/public/v1/product/listing/list-by/city?cityCode=BARCELONA&limit=5000&language=fr",
headers={
"Headout-Auth": HEADOUT_TEST_API_KEY
}
).json()

if (request.GET.get('mybtn')):
for item in response['items']: # for loop
Product.objects.get_or_create(
title=item['name'],
destination=item['city']['name'],
#description=response['contentListHtml'][0]['html'],
link=item['canonicalUrl'],
image=item['image']['url'],
)

return render(request, "form.html")

我该怎么做?

根据 @ralf 的回答,这就是我得出的结论:

def api_data(request):
if (request.GET.get('mybtn')):
url_1 = requests.get("https://www.test-headout.com/api/public/v1/product/listing/list-by/city?cityCode=BARCELONA&limit=5000&language=fr",
headers={
"Headout-Auth": HEADOUT_TEST_API_KEY
}
)

base_url_2 = requests.get("https://www.test-headout.com/api/public/v1/product/get/",
headers={
"Headout-Auth": HEADOUT_TEST_API_KEY
}
)

resp_data = url_1.json()

for item in resp_data['items']:
url = '{}{}'.format(base_url_2, item['id'])
resp_data = url.json()

Product.objects.get_or_create(
title=item['name'],
destination=item['city']['name'],
description=response['contentListHtml'][0]['html'],
link=item['canonicalUrl'],
image=item['image']['url']
)

return render(request, "form.html")

最佳答案

我不想在我的其他答案中添加更多代码,所以这里有一个新的代码。因此,根据您更新的问题代码,您的代码可能应如下所示:

def api_data(request):
if request.GET.get('mybtn'): # this should probably be compared to something ???
resp_1 = requests.get(
"https://www.test-headout.com/api/public/v1/product/listing/list-by/city?cityCode=BARCELONA&limit=5000&language=fr",
headers={
"Headout-Auth": HEADOUT_TEST_API_KEY
})
resp_1_data = resp_1.json()
base_url_2 = "https://www.test-headout.com/api/public/v1/product/get/"

for item in resp_1_data['items']:
# concat ID to the URL string
url = '{}{}'.format(base_url_2, item['id'])

# make the HTTP request
resp_2 = requests.get(
url,
headers={
"Headout-Auth": HEADOUT_TEST_API_KEY
})
resp_2_data = resp_2.json()

Product.objects.get_or_create(
title=item['name'],
destination=item['city']['name'],
description=resp_2_data['contentListHtml'][0]['html'],
link=item['canonicalUrl'],
image=item['image']['url']
)

return render(request, "form.html")

关于python - 在django中使用for循环迭代另一个url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com