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
})