как передать js переменных в jinja2 - PullRequest
0 голосов
/ 01 августа 2020

Я хочу передать переменную javascript в конструкцию jinja2 url_for. Но кажется, что он читает только простые строки, а не переменные. Можно ли это вообще сделать? Мой сценарий находится в файле HTML. В приведенном ниже коде я хочу, чтобы аргумент имени был равен тексту переменной, но он просто не анализирует его.

<script>
    function process_search_submit() {
        if (chosenId === "") {
            alert("Please choose a category");
        } else {
            var text = $("#media_name").val();
            if (text === "") {
                alert("Please enter a name of anime/manga/book you want to search");
            } else {
                var category = chosenId;
                if (category === "anime") {
                    $('#query_form').attr("action", "{{url_for('anime', name=text)}}");
                } else if (category === "manga") {
                    $('#query_form').attr("action", `{{url_for('manga', name=text)}}`);
                }
               
                $('#query_form').submit();

            }
        }
    }

</script>

UPDATE, from views.py

@app.route("/anime", methods=["POST"]) 
def anime():     
  name = request.args["name"]

Я просто хочу, чтобы в URL было /anime/{user typed name of anime} или /anime?name={user typed name of anime} аниме.

1 Ответ

0 голосов
/ 01 августа 2020

Это должно сработать. Добавьте в свой шаблон для диагностики:

{{ text }}
{{ url_for('anime', name=text) }}

И посмотрите, что на самом деле вставлено в шаблон. S

Ваше представление должно выглядеть примерно так:

@app.route("/anime/<text>", methods=["GET", "POST"]) 
    def anime(text=""):     
      return render_template('hello.html', text=text)
...