[英]How to pass a Python variable/Jinja2 template to a JavaScript file?
[英]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.