使用 Django 和 Jquery 将选择选项值传递给命名的 url 模式
Posted
技术标签:
【中文标题】使用 Django 和 Jquery 将选择选项值传递给命名的 url 模式【英文标题】:Pass select option value into named url pattern using Django and Jquery 【发布时间】:2011-05-17 08:44:01 【问题描述】:我的 django 模板中有一个下拉列表:
<select name="submit_new" id="submit_new">
<option value="Stdo">Studio</option>
<option value="Flm">Film</option>
<option value="Drctr">Director</option>
</select>
<button type="submit_type" id="submit_new_button">Go</button>
我想取选择的值并将其传递给 django 命名的 url 模式
$("#submit_new_button").click(function()
var NewLink = % url add_record $("#submit_new").val() %
window.location.href = NewLink
);
显然,正如所写,这是行不通的。如何将命名模式 % url add_record VAR % 与 jquery 值 $("#submit_new").val() 结合使用?
编辑:
我的 add_record 的 url 条目是:
url(r'^add_(?P<modelname>\w+)/$', views.generic_change, name = 'add_record')
【问题讨论】:
【参考方案1】:肯定是 urls.py 中的 add_record 条目有问题,但模板也需要一点帮助。尝试明确使用该 url 条目的所有参数。您可以稍后切换到更短的 hadn 表示法,但现在只需尝试一下即可:
url(r'^add_(?P<modelname>\w+)/$',
view='your_app.views.generic_change',
name='add_record')
然后在你的模板中试试这个:
$("#submit_new_button").click(function()
var link = '% url add_record 'NEWVALUESTUB' %';
link = link.replace('NEWVALUESTUB', $("#submit_new").val());
window.location.href = link;
);
【讨论】:
我喜欢这个主意。但我仍然收到 TemplateSyntaxError: Caught NoReverseMatch while rendering: Reverse for 'add_record' with arguments '(u'--NEW--VALUE--',)' 和关键字参数 '' not found。从其他一些研究来看,我认为可能没有解决方案,因为 Django 呈现模板的方式。很想得到纠正。 . . 更新了基于答案的问题更新。肯定有解决办法。你只需要一次解决一个问题;首先是 urls.py,然后是模板;^) 我仍然收到 TemplateSyntaxError,但是当我删除连字符时,它运行良好(即使没有更改 url 模式)。谢谢! 再进行一次调整以删除连字符,以便答案与最终适合您的答案相匹配。【参考方案2】:<script>
$("#next-button").click(function()
var countryid = $('input:radio[name=countries_list]:checked').val();
var link = "% url 'selectbank' value=2 %";
link = link.replace('2', countryid);
window.location.href=link;
);
</script>
我在使用单选按钮时遇到了同样的问题。按照上面的答案。但我得到了 NoReverseMatch found 错误。
我可以通过这个方法解决它。
【讨论】:
以上是关于使用 Django 和 Jquery 将选择选项值传递给命名的 url 模式的主要内容,如果未能解决你的问题,请参考以下文章
检查是不是使用 jQuery 选择了选项,如果没有选择默认值
<select> 内循环的 Django 模板在选择后呈现值