是否可以通过Django的{%url%}模板标记传递关键字参数?关键字agument值应该来自html标签

时间:2016-05-09 09:01:16

标签: jquery html django django-templates django-urls

我有一个模板文件,我想在我的模板文件中使用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标记的关键字参数。

2 个答案:

答案 0 :(得分:0)

不是这样的。因为模板在发送给用户之前呈现。所以在渲染时,输入的值还不知道。但是,模板渲染也不会运行javascript。

您可以做的是在客户端使用javascript分配网址。与您的操作类似,但您必须将其连接到某个操作。如果输入已填充,则$(document).ready;如果您正在等待用户的互动,则$(value1).on('change')

答案 1 :(得分:0)

当Django呈现模板时,在服务器端评估模板标记。在客户端执行JavaScript代码后,模板标记将不再可见,您只需获得生成的URL字符串。

如果要在URL中插入JavaScript值,您有两个选择:

  1. 将值作为GET参数传递:
  2. '{% url "test_code" %}'+'?code=value1&test_value=value2'

    1. 使用临时关键字参数生成URL,稍后将其替换为JavaScript值:
    2. var url = '{% url "test_code" code="code_value" test_value="test_value" %}'; url.replace("code_value", value1); url.replace("test_value", value2);