我有一个特定的方法methodA
,我需要在Flask中添加可选参数。使用**kwargs
通常很简单-
@subapp.route('endpoint',methods=['GET','POST'])
def methodA(required_arg,**kwargs):
#stuff
但是,当我尝试使用模板中的**kwargs
调用url_for()
时,就会出现问题。在django
中,类似这样的方法就可以了-
<a href = "{{url_for('subapp.methodA',required_arg='arg',kwargs={'additional_arg':'arg'})}}">A Link</a>
当我在Flask中尝试该操作时,它只是将kwargs={'additional_arg':'arg'}
解释为原始文本并转义所有内容,而忽略了该过程中的变量。同样的问题was asked earlier。但是,像OP一样,省略了kwargs=
部分,就像
<a href = "{{url_for('subapp.methodA',required_arg='arg', {'additional_arg':'arg'})}}">A Link</a>
特别是给我一个TemplateSyntaxError
TemplateSyntaxError: invalid syntax for function call expression
此外,较早提出的问题的可接受答案没有说明如何在url_for
中正确添加其他参数。因此,request.args
无法捕获kwargs
中的参数。即使kwargs=
保留在url_for
中,request.args
still 也无法提取多余的参数。 (确切地说,Flask甚至没有使用该方法,它完全逃脱了kwargs
并产生了404
错误。)较早的问题对我的问题没有任何帮助-可以有人对我应该做什么有任何新建议?
答案 0 :(得分:0)
以与Python中的key='value'
相同的方式传递额外的参数:
<a href = "{{url_for('subapp.methodA', required_arg='arg', additional_arg='arg')}}">