2017-10-10 60 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) 

我刚刚通过一个字典和我的动态变量作为关键。