使用 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 模式的主要内容,如果未能解决你的问题,请参考以下文章

Django Jquery:基于选择,显示更多选择选项

检查是不是使用 jQuery 选择了选项,如果没有选择默认值

<select> 内循环的 Django 模板在选择后呈现值

jQuery - 禁用选项时更改选择值

从 Django 中的 JsonResponse 中提取字段值并将其传递给 Ajax Jquery

Django ModelChoiceField - 通过 JQuery 选择选项而不删除选项