Python / Flask / Ajax: отправить ключ dict от клиента на сервер - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь выяснить, какое изображение было нажато на моей странице (сгенерировано с помощью Flask) и отправить идентификатор этого изображения в программу на Python с Ajax. Эти изображения отображаются в виде цикла:

_result_remote.html:

{% for key, value in resultat.vars_buttons.items() %}
    <div class="tuile{{1+loop.index%23}} news col-xs-4 col-lg-2">
        <img id ="{{key}}"style="margin-top:-5px;" src="../static/img/remote/tvb.png" width="30" >{{ value }}
    </div>
{% endfor %}

Я пытался поместить этот скрипт непосредственно перед оператором {% endfor%}:

$(function() {
    $('img#{{key}}').on("click", function (e) {
        var id = $(this).attr("id");
    $.ajax({
        url: "/remote",
        type: "POST",
        id: id})
    });
});

и, наконец, в моем app.py:

app.py:

@app.route('/remote', methods=['POST'])
def remote():
    commande =  request['id'];
    return print(commande)

другая информация: моя страница называется _result_remote.html, потому что она фактически включена в другую страницу, которая отображается следующим образом:

app.py:

@app.route('/')
def accueil():
    resultat = {'module_identique' : "", "module":"", "vars": {}}
    return render_template("accueil_modulable.html", titre="Bienvenue!",resultat=resultat)

accueil_modulable.html:

<div class="row result {{ resultat.module_identique }}" id="ajax_result">
    {% for module in modules %}
        {% if resultat.module == module %}
            {% include '_result_'+ module +'.html' %}
        {% endif %}
    {% endfor %}
</div>

Кстати, включение хорошо работает.

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 мая 2018

Если вы используете Jinja 2.9 или выше, вы можете передать переменную контекста, используя ключевое слово.

<div class="row result {{ resultat.module_identique }}" id="ajax_result">
    {% for module in modules %}
        {% if resultat.module == module %}
            {% with resultat=resultat %}
                {% include '_result_'+ module +'.html'%}
            {% endwith %}
        {% endif %}
    {% endfor %}
</div>

Для версий Jinja <2.9 вам нужно добавить расширение. </p>

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