我正在構建一個簡單的應用程式,我在其中訪問react和在后端分頁。djangoAPI
問題是,我想在每次頁面點擊時進行兩次呼叫,例如 - 如果用戶點擊第 1 頁,那么我正在嘗試使用 page&page=1和進行 api 呼叫&page=2。如果用戶單擊第 2 頁然后進行 api 呼叫&page=3,&page=4如果用戶單擊第 3 頁然后進行 api 呼叫&page=5和&page=6
但問題是,當用戶在頁面上時1st,它正在很好地進行 api 呼叫(第 1 頁和第 2 頁)但是當用戶移動到第 2 頁時,它正在使用&page=2and&page=3而不是&page=3and呼叫 api &page=4。
我想為接下來的兩頁呼叫 api。
視圖.py
class MakeApiCall(APIView):
def get(self, *args, **kwargs):
current_page = self.request.query_params.get('current_page')
current_page = int(current_page)
for index in range(2):
url = "https://api.punkapi.com/v2/beers?page=" str(current_page)
call_api = requests.get(url)
print(call_api.url)
current_page = 1
當我使用 current_page = 1 運行上面的函式時,它正在呼叫 api,page=1但是page=2當我呼叫 current_page = 2 時,它再次呼叫page=2而page=3不是page=3andpage=4
我為它創建了 while 回圈,但它的作業原理就像這個范圍函式一樣。
每個頁面都會回傳25 results,所以當 Array 有 50 個專案時我將停止回圈但它仍然像下面的函式一樣作業
results = []
while len(results) != 50:
url = "https://api.punkapi.com/v2/beers?page=" str(current_page)
call_api = requests.get(url)
for result in api_results.json():
if len(results) < 50:
results.append(result)
else:
break
但它仍然以同樣的方式呼叫 api。
我喜歡這種while方法,最好但不起作用。
前端很好,但如果你需要它,請告訴我
uj5u.com熱心網友回復:
它看起來index沒有在for回圈中用于獲取適當的頁面。相反,您正在獲取當前頁面和下一個頁面,這是您觀察到的行為。在while回圈中,current_page被獲取 50 次,沒有任何增量。
我們可以使用一個簡單的公式來確定回圈的開始索引:(current_page * 2 - 1您可以手動檢查這是否適用于current_page1、2、3 等情況)。
(該公式有效,因為在每次呼叫 API 時,您都從奇數頁開始獲取一對頁面。)
這意味著回圈views.py應該如下所示:
...
for i in range(2):
start_index = current_page * 2 - 1
url = "https://api.punkapi.com/v2/beers?page=" str(start_index i)
call_api = requests.get(url)
print(call_api.url)
uj5u.com熱心網友回復:
你應該計算
index1 = (current_page * 2) - 1
index2 = (current_page * 2)
因為current_page = 1它給1, 2
因為current_page = 2它給3, 4
因為current_page = 3它給5, 6
等等
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515395.html
上一篇:有沒有比回圈更快/更有效的方法來從串列中發出多個api請求?
下一篇:在顫動中無法捕獲dio包的錯誤
