gpt4 book ai didi

jquery - Flask URL 路由 : url_for only passes first argument

转载 作者:行者123 更新时间:2023-11-30 23:10:17 24 4
gpt4 key购买 nike

我有 jQuery 选项卡式面板,可以在单击时加载选项卡内的页面。这很好用。我现在想要的是将其他参数传递给 url,例如所单击的选项卡的标题。要加载的脚本如下:

$(document).ready(function(){
$( "#content" ).load( "{{url_for(xyz, query=query)}}" );
var tabs = $('.tabs > li');
tabs.on("click", function(){
tabs.removeClass('active');
$(this).addClass('active');
$( "#content" ).load( "{{url_for(xyz, query=query)}}" );
})
});

html 如下:

<ul class="tabs clearfix" >
<li>
<a href=# >All</a>
</li>
<li class=active >
<a href=# >You</a>
</li>
<li>
<a href=# >Me</a>
</li>

我想将选项卡标题作为另一个参数传递给我的 flask url_for。另外,检查对象属性的最佳方法是什么。我的意思是,在 python 中,我可以使用 dir(object) 列出有关该对象的所有内容。有没有一种简单的方法可以显示浏览器中某处单击的选项卡对象的属性。谢谢

更新这就是我想到的:

var index = $(this).children('a')[0].title;

如果你想要a标签的标题或者

var index = $(this).children('a')[0].innerHTML;

现在的问题是我无法将此 js 变量传递给 url_for 函数。或者更确切地说,在我看来,它在函数内显示为 None

更新两个我现在有一个条件,因为根据我的理解,我无法将 js 变量传递给 jinja。

if(index=='a'){
$( "#content" ).load( "{{url_for('xyz', index='a', query=query)}}" );
}
else if(index=='b'){
$( "#content" ).load( "{{url_for('xyz', index='b', query=query)}}" );
}
else{
$( "#content" ).load( "{{url_for('xyz', query=query)}}" );
}

现在的问题是,flask 只传递第一个参数,而第二个参数为 None。因此,在 if block 中,当查询为 None 时,索引的值会经过,而在 else block 中,查询有一个值。 View 内的函数是

@app.route('/xyz')
def xyz():
query = request.args.get("query")
index = request.args.get('index')

更新3我已经弄清楚问题出在哪里了。我正在使用 jQuery 加载函数中的字符串从页面加载内容。 url_for 创建表单的 url

/respanes?index=a&query=b

这是我所需要的,但是当它用引号引起来时,&符号被转换为 & ,浏览器无法正确读取

/respanes?index=a&amp;query=b

所以现在我需要能够正确地逃脱它。我尝试将字符串包装在encodeURI 中,但这没有帮助。

所以我最终不得不使用替换来完全获得我想要的字符串。

 $( "#content" ).load('{{url_for('.xyz, index=a, query=query)}}'.replace('&amp;','&'));

希望有人能想出更好的方法来做到这一点。我想要的只是有一个选项卡式面板,可以通过 ajax 加载页面。我不确定经历这一切是否是必要的,但希望像我这样的菜鸟可以从我的挣扎中汲取教训:)

最佳答案

我来晚了一点,但我遇到了同样的问题。正确的解决方案非常简单:使用 Jinja2 safe 过滤器强制其输出原始字符串,而不是使用网络安全实体对其进行格式化。

{{url_for('x.y', index=a, query=query) | safe}}

有关过滤器的更多信息,请参见此处:http://jinja.pocoo.org/docs/dev/templates/#safe

关于jquery - Flask URL 路由 : url_for only passes first argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30761925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com