【问题标题】: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 标签的关键字参数。

【问题讨论】:

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


【解决方案1】:

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

您可以做的是在客户端使用 javascript 分配 url。与您所做的类似,但您必须将其与某些操作联系起来。 $(document).ready 如果输入已经填满,$(value1).on('change') 如果您正在等待用户的交互。

【讨论】:

    【解决方案2】:

    当 Django 渲染模板时,模板标签在服务器端进行评估。在客户端执行 JavaScript 代码后,模板标签将不再可见,您只有得到的 URL 字符串。

    如果你想在 URL 中插入一个 JavaScript 值,你有两个选择:

    1. 将值作为 GET 参数传递:

    '{% url "test_code" %}'+'?code=value1&amp;test_value=value2'

    1. 使用临时关键字参数生成 URL,稍后用 JavaScript 值替换它们:

    var url = '{% url "test_code" code="code_value" test_value="test_value" %}'; url.replace("code_value", value1); url.replace("test_value", value2);

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2011-06-03
      • 2021-06-05
      • 2011-01-08
      • 2017-08-11
      • 2020-07-06
      • 2018-03-21
      • 2015-05-16
      相关资源
      最近更新 更多