如何在Flask的url_for方法中使用kwargs

时间:2018-11-26 20:31:31

标签: python flask

我有一个特定的方法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错误。)较早的问题对我的问题没有任何帮助-可以有人对我应该做什么有任何新建议?

1 个答案:

答案 0 :(得分:0)

以与Python中的key='value'相同的方式传递额外的参数:

<a href = "{{url_for('subapp.methodA', required_arg='arg', additional_arg='arg')}}">