2017-10-10 62 views
2

我認爲這被稱爲「位置參數」或相反或關鍵字參數。我已經在Python Django和Rest框架中編寫了一個腳本,它必須從用戶那裏接收參數並將其提供給Amazon API。這是代碼;Python Django在函數參數中相等。動態設置變量

page = request.query_params.get('page'); 
search = request.query_params.get('search'); 
search_field = request.query_params.get('search_field'); 
search_index = request.query_params.get('search_index'); 

response = amazon.ItemSearch(Keywords=search, SearchIndex=search_index, ResponseGroup="ItemAttributes,Offers,Images,EditorialReview,Reviews") 

在這段代碼中,文字Keywords=search有所不同。那是。它可能是這樣的Actor =搜索,標題=搜索,或發佈商=搜索我不知道如何使Keywords部分動態,使其更改爲用戶的輸入,如演員,標題或發佈者

回答

2

我認爲你應該建立一個你的kwargs字典,然後使用**語法來擴展它的函數調用。我要去給它假定了search_field查詢參數改變搜索的例子:

search = request.query_params.get('search'); 
search_field = request.query_params.get('search_field'); 
search_index = request.query_params.get('search_index'); 

kwargs = { 
    'SearchIndex': search_index, 
    'ResponseGroup': 'ItemAttributes,Offers,Images,EditorialReview,Reviews' 
} 

# Presuming search_field is the key, i.e. "Keywords", or "Actor" 
kwargs[search_field] = search 
### kwargs['Keywords'] = search 
response = amazon.ItemSearch(**kwargs) 
+1

謝謝。我在回答我自己的問題後看到了這個。 – LogicDev

+0

沒關係,很高興你有解決方案:) **擴展技巧對於這些情況非常有用。 – ARJMP

1

我用一本字典來代替。我就是這麼做的;

page = request.query_params.get('page'); 
    search = request.query_params.get('search'); 
    search_field = request.query_params.get('search_field'); 
    search_index = request.query_params.get('search_index'); 

    dict = {'SearchIndex':search_index, 'ResponseGroup': 'ItemAttributes,Offers,Images,EditorialReview,Reviews'} 
    dict[search_field] = search; 
    response = amazon.ItemSearch(**dict) 

我剛剛通過一個字典和我的動態變量作爲關鍵。