【发布时间】:2023-03-26 03:43:01
【问题描述】:
我已经看到很多关于这个主题的问题和答案(例如this one),但解决方案似乎回避了我。在我的模板中,我有一系列单选按钮,并希望将所选项目传递回视图
common/urls.py
path('use-selected/<str:app_base>/<str:board_number>/', views.UseSelectedItem.as_view(), name='use-selected'),
如果我在模板中输入以下代码,它可以正常工作
<a id="use-selected" href="{% url 'use-selected' app_base='solo' board_number='4' %}"><button type="submit">Use selected</button></a>
另一方面,如果我在 javascript 中分配 href
html
<a id="use-selected" href=""><button type="submit">Use selected</button></a>
javascript
$(document).ready(function () {
selectedBoard = document.getElementsByName('selected_board_id');
use_selected_href = document.getElementById('use-selected-href');
selectedBoard.forEach((radioButton) => {
radioButton.addEventListener('click', () => {
processBoardSelection(radioButton.value)
});
})
});
function processBoardSelection(board_number) {
var use_selected_text = "{% url 'use-selected' app_base='app_base_value' board_number='board_number_value' %}"
temp_text = use_selected_text.replace('board_number_value', board_number.toString());
use_selected_href.href = href_text;
// use_selected_href.href="{% url 'use-selected' app_base='solo' board_number='4' %}"
}
链接失败。请求网址是
http://127.0.0.1:8000/common/history/solo/%7B%25%20url%20'use-selected'%20app_base%3D'solo'%20board_number%3D'4'%20%25%7D
我不明白 common/history/solo 元素出现在哪里。 common 和 solo 是我项目中的应用程序; common/history 是访问此页面的 url
[EDIT 20210808 08:51 UCT] 我已经基于这个问题构建了一个简单的测试应用程序,它可以正常工作。它使用模板中的 javascript 和 a 标记,如此处所示(java 脚本位于单独的文件中)。 url被正确解释,参数被传递给视图。
我再说一遍:
我不明白 common/history/solo 元素出现在哪里。
在失败的url中
【问题讨论】:
-
这是在单独的 Javascript 文件中吗? Django 模板语言仅适用于您告诉 Django 呈现的 HTML 模板文件。看起来您已经将文字模板语言字符串作为您的 URL,因此浏览器对其进行 URL 编码并将其用作相对 URL(就像它被告知用作 URL 的任何随机字符串一样)。
-
脱离@RobinZigmond 所说的那样,您在Javascript 中能做的最好的事情就是使用模板文字(反引号键)用变量格式化您的URL。有关更多信息,请参阅本文:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
它是一个单独的js文件。那么如何在url中传递变量作为参数呢?我增强了我的问题
标签: javascript django