【问题标题】:Python Django equals in function arguments. Setting the variable dynamicallyPython Django 在函数参数中等于。动态设置变量
【发布时间】:2018-03-21 08:12:02
【问题描述】:

我认为这被称为“位置参数”或相反或关键字参数。我在 Python Django 和 rest 框架中编写了一个脚本,该脚本必须从用户那里获取参数并将其提供给 Amazon API。这是代码;

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=search、Title=search 或 Publisher=search 我不确定如何使 Keywords 部分动态化,以便它更改为用户的输入,例如 Actor、Title 或 Publisher

【问题讨论】:

    标签: python django python-3.x django-rest-framework


    【解决方案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)
    

    我刚刚传递了一个字典,其中我的动态变量作为键。

    【讨论】:

      【解决方案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)
      

      【讨论】:

      • 谢谢。我在回答自己的问题后才看到这个。
      • 没关系,很高兴您找到了解决方案 :) ** 扩展技巧对于这些情况非常有用。
      猜你喜欢
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多