我正在编写一个小型Flask应用程序,到目前为止只使用了调用Python函数的路径。到目前为止,我只是指定当用户访问某个URL时要调用的Python函数。
现在我想使用textBox的值来构造路由。所以我在页面上有一个textBox,如果用户输入" Bowdoin",我想按如下方式构建一个路径:
/team/<teamName>
在这种情况下,和teamName将是Bowdoin。
我可以使用基本JS获取textBox的值,但我不确定如何将此值传递给我的视图文件并在路由中使用(如上所述)。
任何帮助都非常感激。
谢谢, bclayman
答案 0 :(得分:1)
您有一个文本框,用户将在其中输入团队名称,并且您希望使用JavaScript从Flask获取该团队名称的页面的URL。
假设:
<input type="text" id="teamname" placeholder="Team name">
<button id="btn_teamname">Get team name</button>
你在那个按钮上有一些处理程序:
$('#btn_teamname').on('click', function() {
// do something
});
首先,我们要使用url_for
,因为这是在Flask中生成网址的最佳方式。请记住,一旦用户查看页面,Flask就会完成渲染,我们无法使用url_for
而无法从Flask(后端)获取。
对于此示例,请执行下一个最佳操作:因为您知道团队名称变量只是附加到URL的末尾,所以从Flask获取基本URL并使用JavaScript构建最终URL。
在某处的HTML中,存储Flask的基本网址:
<span id="teambaseurl" hidden>{{ url_for('teamname') }}</span>
然后,当用户单击按钮并完成URL时,您可以使用JavaScript获取它:
$('#btn_teamname').on('click', function() {
var baseURL = $('#teambaseurl').text();
var finalURL = baseURL + "/" + $('#teamname').val();
// window.location.href = finalURL; // if you want to immediately navigate to that page
});