是否可以将关键字参数传递给 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&amp;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 标签的主要内容,如果未能解决你的问题,请参考以下文章

django 将参数传递给模板标签中的函数

将参数传递给FormView Django中的表单

Django将多个参数传递给If语句中的自定义模板过滤器

将参数传递给 Django CreateView

如何将额外的参数传递给 django admin 自定义表单?

将参数传递给 django 表单