Python 仅传递非';t烧瓶'无;s url_用于
我目前正在尝试使用关键字和form GET方法在Flask中设置搜索 要处理分页,我必须将过滤器的所有关键字传递到下一页或最后一页的Python 仅传递非';t烧瓶'无;s url_用于,python,flask,Python,Flask,我目前正在尝试使用关键字和form GET方法在Flask中设置搜索 要处理分页,我必须将过滤器的所有关键字传递到下一页或最后一页的url\u。然而,有时这些关键字并不需要,只是把url栏弄得乱七八糟 {url_for(request.endpoint,page=pagination.next_num,searchTerm=searchTerm,blendLicense=blendLicense,renderEngine=renderEngine,blendVersion=blendVersio
url\u。然而,有时这些关键字并不需要,只是把url栏弄得乱七八糟
{url_for(request.endpoint,page=pagination.next_num,searchTerm=searchTerm,blendLicense=blendLicense,renderEngine=renderEngine,blendVersion=blendVersion)}
有没有办法只传递那些不是None
的关键字,这样就不会把URL栏弄得乱七八糟?如果只有一个关键字要检查,我会使用If-else
块,但有许多关键字要检查。执行如下调用:
kwargs = dict(searchTerm=searchTerm,
blendLicense=blendLicense,
renderEngine=renderEngine,
blenderVersion=blenderVersion)
url_for(request.endpoint, page=pagination.next_num, **kwargs)
这与您问题中的代码相同。
但是现在您可以方便地过滤掉默认值,例如None
:
def filter_default(kwargs):
return {k: v
for k, v in kwargs.items()
if v}
(或者,如果v不是None,则使用,
如果可能存在空字符串之类的值。)
在传入词典之前,将该筛选函数应用于词典
编辑
url\u for
已经忽略了None
的关键字。你不需要在上面做任何事情
@app.route(“/search”)
def search():
...
{{ url_for(request.endpoint,
page=pagination.next_num,
**filter_default(dict(searchTerm=searchTerm,
blendLicense=blendLicense,
renderEngine=renderEngine,
blenderVersion=blenderVersion))) }}
url_for("search", name="Flask", page=2))
"/search?name=Flask&page=2"
url_for("search", name="Flask", page=None))
"/search?name=Flask"