将django模板中的下拉值传递给视图

时间:2016-05-30 19:03:31

标签: django templates view

我有一个django视图,它使用两个下拉菜单呈现模板:

<div class="input-group" id="_layer" style="display:none;">
              <div class="input-group-btn" >
                  <div class="btn-group btn-group-sm" style="width:100%">
                      <div class="dropdown">
                        <button class="btn btn-primary dropdown-toggle" id="button-countries" type="button" name="name1" data-toggle="dropdown" data-target="#" style="width:100%">Country
                            <span class="caret"></span></button>
                            <ul class="dropdown-menu dropdown-menu-countries" id="country_list" name="name1" style="height: auto; max-height: 200px; overflow-x: hidden;">
                                {% if countries %}
                                    {% for cntr in countries %}
                                          <li><a href="#" id= {{ cntr }}>{{ cntr }}</a></li>
                                    {% endfor %}
                                {% endif %}

                            </ul>
                      </div>
                  </div>
              </div>
              </br>
              <select multiple="multiple" class="has-popover form-control" id="_all_values" data-container="body" data-content="keyword identifies a location Hold down &quot;Control&quot;, or &quot;Command&quot; on a Mac, to select more than one." data-html="true" data-placement="right" name="regions" data-original-title="" title="">
              </select>

              </br>
              <a href="{% url "layer_upload" %}" class="btn btn-primary pull-right">{% trans "Download as Excel" %}</a>

  </div>

标签之间的值会自动填充,具体取决于第一个菜单的选择。

我现在要做的是当用户按下按钮时将两个下拉菜单(国家和地区)的选择传递到另一个视图:下载为excel。

在Django中最合适的方法是什么?

1 个答案:

答案 0 :(得分:1)

执行此操作的最简单方法(对我而言)是通过POST或GET以基本HTML表单提交您的信息。然后,在专用表单视图中捕获所选国家和地区。

另一种方法是,如果您将网址设为/your-url/the_country_id/the_region_ud,则在选择更改时更新链接网址(使用jQuery,或不使用AngularJS)。 jQuery reference

HTML示例

<select name="test" id="">
  <option value="france">france</option>
  <option value="mexico" selected>mexico</option>
  <option value="china">china</option>
</select>

<a href="https://google.com#q=" target=_blank>Go to <span class="text"></span></a>

Javascript示例

var $btn = $('a'),
    $btnHref = $btn.attr('href'),
    $btnTxt = $('.text'),
    $select = $('select');

$btnTxt.text($select.val());
$btn.attr('href', $btnHref + $select.val());

$select.change(function () {
    $btnTxt.text($select.val());
  $btn.attr('href', $btnHref + $select.val());
});

JsFiddle Example