在Ansible中,我试图从字典开始构建URL字符串。
这是来源字典:
query_string:
UserName: myname
Notes: abcd
GenericField1: foo
这是我想要获得的:
UserName=myname&Notes=abcd&GenericField1=foo
我尝试了几种Jinja文件管理器组合(urlencode,flatten等),但我无法达到目标。 有人有建议吗?
答案 0 :(得分:0)
这是您要查找的代码吗?
- set_fact:
my_url: >
UserName={{ query_string.UserName -}}
&Notes={{ query_string.Notes -}}
&GenericField1={{ query_string.GenericField1 -}}
答案 1 :(得分:0)
如果query_string
词典具有更多属性,则此代码为您提供了根据需要使用更多字段的灵活性
- name: build the url
set_fact:
myurl: "{{ myurl | default('') + item.key + '=' + item.value + '&' | regex_replace('\\&$', '') }}"
loop: "{{ query_string|dict2items }}"
答案 2 :(得分:0)
此解决方案运行正常:
- name: Create query string from input params
set_fact:
URL_params: "{{ URL_params }}{{ (index > 0)|ternary('&','') }}{{ item.key }}={{ item.value | urlencode }}"
loop: "{{ query_string | dict2items }}"
loop_control:
index_var: index
答案 3 :(得分:0)
与@EBAH几乎相同:
- set_fact:
url_str: "{{ (url_str | default('')) + ('&' if (index > 0) else '') + (item.key+'='+item.value| urlencode) }}"
loop: "{{ query_string | dict2items }}"
loop_control:
index_var: index