Как установить необязательные аргументы в jinja2 - PullRequest
0 голосов
/ 31 октября 2018

Я использовал jinja2 для создания шаблона json. Шаблон JSON генерируется как ожидалось. Тем не менее, как я могу сделать некоторые параметры необязательными. Например, в приведенном ниже шаблоне sam, uri_2 and uri_3 являются необязательными. Когда я не передаю значения для них в template.render, я не хочу, чтобы эти параметры возвращались в шаблоне. В настоящее время для этих параметров возвращаются пустые значения.

from jinja2 import Template

template = Template(''' 
        {
          "start": "{{start}}",    
          "end": "{{end}}",
          "sam": "{{sam}}",
          "res": "{{res}}",
          "uris": 
          [
             "{{uri_1}}",
             "{{uri_2}}",
             "{{uri_3}}"
          ]
        }   

        ''')

        payload = template.render(start=1560009000, end=1560009000, res=3, uri="abc.com")

выход:

{"end": "1540995788", "res": "3", "sam": "", "start": "1540390988", "uris": ["abc.com", "", ""]}

1 Ответ

0 голосов
/ 31 октября 2018

С точки зрения параметров, которые вообще не передаются (например, sam в вашем примере), тогда

{% if sam %}   
    "sam" : "{{ sam }}"
{% else %}      
{%endif %}

Вы, вероятно, должны передать свои uri значения в виде списка, а затем сделать что-то подобное в шаблоне:

"uris":
[
    {% for uri in uris %}
    "{{ uri }}"
    {% endfor %}
]

Если нет значений uri и вы не передаете список в render.template, вы можете полностью пропустить тег "uris" аналогично sam.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...