繁体   English   中英

如何在 Jinja2 模板的 href 中传递变量?

[英]How to pass the variable in href in Jinja2 template?

我正在研究 FastAPI 并面临一个挑战。 我需要在 html 的 href url 中传递变量。 在我的代码下面:

主文件

@app.get('/', response_class=HTMLResponse)
def move(request: Request, row_: Optional[int] = None, col_: Optional[int] = None):
    if row_ is not None and col_ is not None:
        your_move = pl.click(row_, col_)
    else:
        your_move = pl.pcard

    return templates.TemplateResponse('home.html', {'request': request, 'elements': your_move, 'count': pl.count} )

注意:这里,查询参数是可选的。

主页.html

 {% for row in elements|batch(4) %}
      <div class="columns">
        {% for column in row %}
        <div class="column">
          {% if column[0] == 'X' %}
            <a href="'{{ url_for('move') }}' + '/?row_={{column[1]}}&col_={{column[2]}}' ">
            <div id="example1"></div>
          </a>
          {% elif column[0] != 'X' %}
            <div id="example2">
              <h1 style="width:100%; text-align: center; padding: -20px; font-size: 5em;">{{ column[0] }}</h1>
            </div>
          {% endif %}
        </div>
       {% endfor %}
      </div>
 {% endfor %}

在这里,我在 HTML 中尝试了 url_for('move'),但是在传递查询字符串参数时它不起作用。 如何达到同样的效果。 我又尝试了一种方法:

<a href="'{{ url_for('move', row_={{column[1]}}, col_={{column[2]}}) }}">

不过,这两种方法都不适合我。 请建议。

你永远不会嵌套 Jinja {{...}}标记。 你想要这样的东西:

<a href="'{{ url_for('move', row_=column[1], col_=column[2]) }}">

您会收到starlette.routing.NoMatchFound错误,因为url_for()接收路径参数,不是查询参数(到目前为止)。 因此,您传递了两个参数(即 row_ 和 col_),它们应该是路径参数(在您的代码中找不到这样的路由),但实际上是查询参数。 请查看有关如何从 jinja2 模板中调用 FastAPI 路由并传递查询参数的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM