使用 jquery 将模板变量传递给 django url
Posted
技术标签:
【中文标题】使用 jquery 将模板变量传递给 django url【英文标题】:Pass a template variable to django url using jquery 【发布时间】:2019-04-07 22:25:34 【问题描述】:是否可以?我尝试了将参数传递给 django url 的标准方法,但我没有得到反向匹配。
Javascript
<button id = "testid" href = "%url 'test:justatest' id=8">Click here for something</button>
<script type="text/javascript">
var btn = $('#testid');
btn.click(function (e)
var goto = $(this).attr('href');
e.preventDefault();
$.ajax(
url: goto,
type: "GET",
success: function(data)
console.log(data);
alert(data);
);
);
</script>
urls.py
path('test/<int:id>',views.TestDetail.as_view(),name="justatest")
我也尝试过这个 this post 但我只收到 404。
<button id = "testid" href = "%url 'test:justatest'%?id=8">Click here for something</button>
<script type="text/javascript">
var btn = $('#testid');
btn.click(function (e)
var goto = $(this).attr('href');
e.preventDefault();
$.ajax(
url: goto,
type: "GET",
success: function(data)
console.log(data);
alert(data);
);
);
</script>
【问题讨论】:
我认为编写 url 的正确方法是“%url 'justatest' '8'”。但请考虑通过您的视图传递 id。 @filtfilt 实际上,当我们在项目中使用多个应用程序时,我们需要在主 url 中添加应用程序 url,并且在重定向时我们需要在 url 中提及 Appname 【参考方案1】:我没有使用 JS 传递参数的经验。但是查看您的代码,我建议您尝试在语句末尾添加 %:
“% url ‘test:justatest’ id=8 %”
告诉我这是怎么回事!
【讨论】:
【参考方案2】:工作!!
我尝试了下面的代码及其工作。
var url = "% url 'my-ur-name' 1 %".replace('1', $(this).attr('temp_id'));
【讨论】:
【参考方案3】:在页面被发送到浏览器之前,模板呈现发生在服务器中。页面渲染完成后,JavaScript 会在浏览器中执行。
根据 Nids Barthwal 的想法,您需要类似她的答案,但要注意替换功能将用于呈现的 URL。
所以在你的模板中,你可能有这样的东西:
let goto = "% url 'justatest' 'temp_arg' %";
最终呈现为:
let goto = "/test/temp_arg/";
现在您可以将“temp_arg”替换为您想要的 jquery 变量。
let goto = goto.replace('temp_arg', $(this).attr('temp_id'))
【讨论】:
以上是关于使用 jquery 将模板变量传递给 django url的主要内容,如果未能解决你的问题,请参考以下文章