- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想将端点传递给 url_for
,其中端点包含 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)
事实上,对于不同的主题(客户、产品、发票),我有很多路线,所有都以这种方式结束。因此,对于每个主题,我都需要一个如下所示的神社模板。
# customer_add.html
...
<form action = "{{ url_for(customer_add, customer_id = customer_id) }}" method = "POST">
<-- html htlm htlm -->
</form>
当用户提交表单时,将遵循 customer_add
的端点并且 customer_add
期望并传递 customer_id = 1234
(或任何值是)。
问题来了。我应该能够像这样组合所有模板。
# subject_add.html
...
<form action = "{{ url_for(subject_target, subject = subject_id) }}" method = "POST">
<-- html htlm htlm -->
</form>
然后像这样渲染它。
# 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)
当我这样做时,我收到一条错误消息,提示 Could not build url for endpoint 'customer_add' with values ['subject']。您是否忘记指定值 ['entity_id']?
测试表明 subject_target
和 subject_id
被替换为 fine。但是 subject
没有被替换,因为在 url_for
语法中它是一个参数名称,端点期望一个名为 customer_id
的变量的值不是主题
。
我希望有一种方法可以说明 jinja 中的参数名称。概括我可能想传递一个参数字典。
理想情况下,我可以像这样传递 d = {'subject': x, ...}
url_for(subject_action, d)
并且 Jinja 会认为这等同于url_for(subject_action, subject=1234, ...
当 x=1234 时。
最佳答案
您可以向 url_for()
添加参数。根据 docs :
Variable arguments that are unknown to the target endpoint are appended to the generated URL as query arguments
所以你可以做
<form action = "{{ url_for(action_target,
subject_type=subject_id,
2nd_variable=2nd_variable,
etc...) }}" method = "POST">
但是正如 wonka 所说,您最好将数据作为 POST
参数发送。
如果我误解了您的意思,并且您试图从 View 中的 render_template
调用传递数据,那么您也可以这样做。
return render_template('template_name.html',
data={
"action_type": "action",
"subject_type": subject_value
})
然后您可以使用 {{data["subject_type"]}}
在您的模板中访问它
关于python - 如何将字典传递给 Flask 中的 url_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408803/
我从 Subdomain RailsCast 获取代码 module UrlHelper def with_subdomain(subdomain) subdomain = (subdom
我有一个使用 nginx 进行反向代理/ssl 终止的 flask 应用程序,但是在 flask 中使用 url_for 和重定向时遇到了麻烦。 nginx.conf 条目: location /fl
设置url_for() Jinja2 模板中的 非常简单(只要它在 HTML 中)。我一直在尝试从 JQuery 内部设置它,如下所示: function my_func(key) {
场景:HTTP 反向代理后面的 Flask + Flask-login Flask 应用程序位于 http://localhost:5000/公共(public)应用程序 http://example
我喜欢很多约定 Overholt example使用过,但遇到了特定问题。 我使用 werkzeug.wsgi 中的 DispatcherMiddleware 对象设置了两个应用程序: from we
这个问题已经有答案了: How to serve static files in Flask (24 个回答) Import javascript files with jinja from stat
我是 flask 和 html 的新手。当我尝试在我的 html 代码中使用 action 属性时出现构建错误,我不知道为什么会发生这种情况。这是我的 html 代码: 还有我的 flask
我们的服务器 (xxxx.edu.au:5000) 上运行着一个 Flask 应用程序。但是,我们设置了代理xxxx.edu.au/getseq它将请求转发到 xxxx.edu.au:5000 不幸的
这个问题已经有答案了: Pass JavaScript variable to Flask url_for (4 个回答) 已关闭 6 年前。 我有这条路线: @my_app.route('/get_
我正在为 Flask 应用程序编写一些测试,遇到一个问题,即我的 test_client 响应中的 URL 与从测试用例中调用 url_for 生成的 URL 不匹配。例如,我的模板中有以下内容: R
url_for 是否跨蓝图工作? /flaskapp /runserver.py (from server import app; app.run(debug=True))
我正在编写一个脚本来收集那些没有收到电子邮件确认电子邮件的用户的电子邮件并将其重新发送给他们。该脚本显然在 Flask 应用程序上下文之外工作。我想使用 url_for() 但无法正确使用。 def
我正在构建一个辅助方法,它允许我传递一个数组,其中包含我希望可用于管理对象(如编辑、删除等)的选项。该方法的简化版本如下所示: def management_links(instance, act
什么时候应该使用命名路由与使用带有 {:controller => "somecontroller", :action => "someaction"} 哈希的 url_for ? 一个比另一个更受欢
我正在尝试在我的管理页面中的某个 ModelView 上加载脚本: class CustomView(ModelView): # Neither approach works here:
我必须在一页(设置)上为多个表编辑/创建表单。因此我创建了 SettingsController。 路线: resources :settings, :only => :index do memb
因为 'code' 是下面 MethodView 类 C 的 get 方法的参数,当我调用 url_for('c', code='O7A') 时,我希望得到的 url 是:/c/O7A 我看到的不是预
我开发多语言网站。 页面有这样的 URI: /RU/about /EN/about /IT/about /JP/about /EN/contacts 在 jinja2 模板中,我写道: About 我
我正在 Flask 中构建模块化应用程序,如果我从当前蓝图中引用另一个蓝图中的函数,我会不断收到构建错误,例如 我有一个文件 userProfiles.py @userP.route('/myProf
我试图找到一个与 Flask 的 url_for 等效的 django 方法。 我不是在寻找 jinja 等价物(如图所示 here )——我说的是在房子的 python 方面 在我的 flask 应
我是一名优秀的程序员,十分优秀!