Визуализация GCP Datastore в JINJA2 показывает также полный ключ - PullRequest
0 голосов
/ 08 апреля 2020

Таким образом, я передаю результат из ds_data = list(query.fetch()) в JINJA2:

return render_template('index.html',images=ds_data)

В python это может быть повторено в виде списка без проблем, но для JINJA2:

data-json="{{image|safe}}"

вместо того, чтобы иметь какой-то диктант: '{}' в HTML, у меня также есть полный ключ:

data-json="<Entity('kind', 'id') {'someDictKey': 'value', 'someDictKey': 'value'}>"

Хм, любые идеи, как я могу удалить ключ сущности в python или правильно отобразить его в JINJA2?

Фрагмент шаблона:

{% block content %}
{% if images is defined %}
<div class="main-content" id="main-content">
...
{% for image in images %}
<tbody id="tbody{{ image['key'] }}" data-json="{{ image  }}">
</tbody>
{% endfor %}
...
{% endif %}
{% endblock %}

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Это то, что я делал прошлой ночью:

@app.template_filter('parse_entity_list')
def parse_filter(item):
    # Recompose DS object to list of dicts
    a = json.dumps(item)
    return a


app.jinja_env.filters['parse_entity_list'] = parse_filter

Сторона JINJA2:

<tbody id="tbody{{ image['key'] }}" data-json="{{ image | parse_entity_list }}">

1 голос
/ 09 апреля 2020

На самом деле вам придется конвертировать ваши данные в строку json. Например, json.dumps(image). В частности, вы можете увидеть, что вам нужно наложить image на диктовку, чтобы получить нужную карту (https://googleapis.dev/python/datastore/latest/entities.html).

...