Python 如何将字典传递到烧瓶中的url_

Python 如何将字典传递到烧瓶中的url_,python,flask,Python,Flask,我想将一个端点传递给url\u,该端点包含name=value参数,其中name是一个变量 基本上我有多个模板,如果我可以传递参数变量名,这些模板可以折叠成一个模板。一个解决办法可能是传递字典,但可能还有其他方法。我完全可以在呈现之前对jinja生成的html进行后处理 我已经尝试了我能想到的所有明显的技巧,包括嵌套的{{} 所以在我的路线代码末尾我有 # routes.py ... @bp.route('/customer/add/prompt/<customer_id>',met

我想将一个端点传递给
url\u,该端点包含
name=value
参数,其中name是一个变量

基本上我有多个模板,如果我可以传递参数变量名,这些模板可以折叠成一个模板。一个解决办法可能是传递字典,但可能还有其他方法。我完全可以在呈现之前对jinja生成的html进行后处理

我已经尝试了我能想到的所有明显的技巧,包括嵌套的
{{}

所以在我的路线代码末尾我有

# routes.py
...
@bp.route('/customer/add/prompt/<customer_id>',methods = ['POST', 'GET'])
@login_required
def customer_add_prompt(customer_id):
    #code code code
    return render_template('customer_add.html',
        customer_id = customer_id)
然后像这样渲染它

# routes.py
...
@bp.route('/customer/add/<customer_id>',methods = ['POST', 'GET'])
@login_required
def customer_add_prompt(customer_id):
    #code code code
    subject_target = 'customer_add.html'
    subject = 'customer_id'
    subject_id = customer_id
    return render_template(subject_target,
        subject = subject_id)
#routes.py
...
@路由('/customer/add/',方法=['POST','GET'])
@需要登录
def客户添加提示(客户id):
#代码
subject\u target='customer\u add.html'
主题='customer\u id'
主题标识=客户标识
返回渲染模板(主题目标,
主题=主题(id)
当我执行此操作时,会出现一个错误,提示
无法为值为['subject']的端点'customer\u add'构建url。您是否忘记指定值['entity\u id']?

测试表明,
subject\u target
subject\u id
被罚款替代。但是未替换
subject
,因为在
url\u for
语法中,它是一个参数名,并且端点期望名为
customer\u id
的变量的值不是
subject

我希望有一种方法可以说出jinja中的参数名称。概括起来,我可能想传递一个参数字典


理想情况下,我可以像这样传递
d={'subject':x,…}
(subject\u action,d)
,Jinja会认为这相当于当x=1234时(subject\u action,subject=1234,)的
url\u for()
url\u

目标端点未知的变量参数为 作为查询参数附加到生成的URL

所以你可以

<form action = "{{ url_for(action_target, 
                           subject_type=subject_id, 
                           2nd_variable=2nd_variable, 
                           etc...) }}" method = "POST">

然后可以使用
{{data[“subject_type”]}在模板中访问它

答案很明显。与其使用jinja评估模板中的
url\u,不如在路径中评估它,并通过
render\u模板将结果传递给jinja

我建议url中不要有相关数据,建议发送post paramsOkay重新阅读问题-你是否试图传递m您对模板的看法如何?谢谢,我已扩展了问题以使其更清楚。因为调用的url_中的终结点需要特定的参数名,我不确定是否通过“溢出”传递参数然后输入字典就行了?看起来您正在尝试为
客户添加
构建和终结点,但是您向我们展示的功能是
客户添加提示
。这可能是您的错误源,因为它们应该是相同的。谢谢,这是一个输入错误。检查并思考一下,两阶段
没有问题>添加客户提示
添加客户
方法,而不是一个阶段的
添加客户
方法。
# routes.py
...
@bp.route('/customer/add/<customer_id>',methods = ['POST', 'GET'])
@login_required
def customer_add_prompt(customer_id):
    #code code code
    subject_target = 'customer_add.html'
    subject = 'customer_id'
    subject_id = customer_id
    return render_template(subject_target,
        subject = subject_id)
<form action = "{{ url_for(action_target, 
                           subject_type=subject_id, 
                           2nd_variable=2nd_variable, 
                           etc...) }}" method = "POST">
return render_template('template_name.html', 
                        data={
                            "action_type": "action",
                            "subject_type": subject_value
                        })