是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签
Posted
技术标签:
【中文标题】是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签【英文标题】:Is it possible to pass keyword arguments via Django's % url % template tag? Keyword agument value should be from the html tags是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签 【发布时间】:2016-09-03 20:14:09 【问题描述】:我有一个模板文件,我想在我的模板文件中使用 url 标签。
html标签<input type="text" id="test_id" value="12" />
网址是这样的
url(r'^check/(?P<code>[a-zA-Z\d]+)/(?P<test_value>[a-zA-Z\d]+)/$',
'test_code',
name='test_code'
),
包含 javascript 代码的模板文件。
`var value1 = $('#test_id').val()`;
`var value2 = $('#test_id').val()`;
'% url "test_code" code=value1 test_value=value2 %'
您可以看到我使用了 url 标签,但我无法从 html 标签值中设置 value1 和 value2。有没有办法可以将 html 标签值传递给 url 标签的关键字参数。
【问题讨论】:
Get javascript variable's value in Django url template tag的可能重复 这不是关键字参数的问题。 【参考方案1】:不是这样。因为模板是在发送给用户之前呈现的。所以在渲染的时候,输入的值是未知的。而且,模板渲染不会运行 javascript。
您可以做的是在客户端使用 javascript 分配 url。与您所做的类似,但您必须将其与某些操作联系起来。 $(document).ready
如果输入已经填满,$(value1).on('change')
如果您正在等待用户的交互。
【讨论】:
【参考方案2】:当 Django 渲染模板时,模板标签在服务器端进行评估。在客户端执行 JavaScript 代码后,模板标签将不再可见,您只有得到的 URL 字符串。
如果你想在 URL 中插入一个 JavaScript 值,你有两个选择:
-
将值作为 GET 参数传递:
'% url "test_code" %'+'?code=value1&test_value=value2'
-
使用临时关键字参数生成 URL,稍后用 JavaScript 值替换它们:
var url = '% url "test_code" code="code_value" test_value="test_value" %';
url.replace("code_value", value1);
url.replace("test_value", value2);
【讨论】:
以上是关于是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签的主要内容,如果未能解决你的问题,请参考以下文章