之前前端的select都是单选类型,在新的场景中允许用户选择多个条件,

前端的代码如下:

  

                    <form action="{% url 'info:result-list' %}" method="get">

                        <div class="inner">

                            <div class="column-item">

                                <div class="form-group">

                                    <select name="destination" class="select2-multi form-control"
data-placeholder="选择一个目的地" multiple>
<option value="">选择一个目的地</option>
<option value="0">任意地点</option>
{% for end_locale in end_locales %}
<option value="{{ end_locale }}">{{ end_locale }}</option>
{% endfor %}
</select> </div> </div> <div class="column-item"> <div class="form-group"> <select name="month" class="select2-multi form-control"
data-placeholder="选择你的出发月份" multiple>
<option value="">选择你的出发月份</option>
<option value="0">任意月份</option>
<option value="1">1 月</option>
<option value="2">2 月</option>
<option value="3">3 月</option>
<option value="4">4 月</option>
<option value="5">5 月</option>
<option value="6">6 月</option>
<option value="7">7 月</option>
<option value="8">8 月</option>
<option value="9">9 月</option>
<option value="10">10 月</option>
<option value="11">11 月</option>
<option value="12">12 月</option>
</select> </div> </div> <div class="column-item"> <div class="form-group"> <select name="year" class="select2-multi form-control"
data-placeholder="选择你的出发年份" multiple>
<option value="">选择你的出发年份</option>
<option value="0">任意年份</option>
{% for year in years %}
<option value="{{ year }}">{{ year }}</option>
{% endfor %}
</select> </div> </div> <div class="column-item for-btn"> <div class="form-group"> <input type="submit" class="btn btn-primary btn-block" value="搜一下"> </div> </div> </div> </form>

搜索按钮被点击时,携带select option信息到后台,url如下:  http://xxxxxx.com/info/result-list/?destination=%E5%8C%97%E4%BA%AC&destination=%E8%A5%BF%E5%AE%89&destination=%E6%B7%B1%E5%9C%B3&month=1&month=2&month=3&year=2019

按照之前的逻辑,在django中,通过request.GET.get('destination',None)获取值,我们希望获取到全部目的地:

但是事实上我拿到的只有深圳:

奇怪,这是为什么呢?

debug模式看一下:

  

  可以看到destination的值都放在一个列表中,用get只能取到字符串,取value应该用getlist才对

  

get和getlist区别:

get() : 根据键获取值  如果一个键同时拥有多个值将获取最后一个值   如果键不存在则返回None值,可以设置默认值进行后续处理

getlist():根据键获取值   返回值为list类型  可以获取指定键的所有值   如果键不存在则返回空列表[]  可以设置默认值进行后续处理

multiple类型的select option在django后台如何取值的更多相关文章

  1. 思路:controller层:后台如何取值 前端如何给name赋值 例如是id赋值还是自己随意定义

    思路:controller层:后台如何取值 前端如何给name赋值 例如是id赋值还是自己随意定义

  2. bootstrap select 多选的用法,取值和赋值(取消默认选择第一个的对勾)

    h5自带的select标签可以实现按住ctrl键多选的功能,但是样式及其难看. bootstrap select是很好用的前端插件 ​ 首先引入bootstrap和bootstrap-select的c ...

  3. js从后台无法取值问题

    前台代码 <script type="text/javascript"> $(function () { var chart; $(document).ready(fu ...

  4. ASP.NET中多个相同name的控件在后台正确取值

    有兽,   页面上可能有多个相同name的Html表单控件,   一般在后台使用Request.Form[“name”]取值,并用‘,’分隔.   但是当值中包含逗号时,   取值就会出现异常,   ...

  5. 关于ligerform中select与text的赋值与取值

    如有下ligerform表单: var formData = [ { display: "区域", name: "QYYJ", newline: true, l ...

  6. TextBox只读时不能通过后台赋值取值解决办法

    给页面的TextBox设置ReadOnly="True"时,在后台代码中不能赋值取值,下边几种方法可以避免:  1.不设置ReadOnly,设置onfocus=this.blur( ...

  7. (转)C# TextBox ReadOnly / Enabled 时,后台无法取值问题

    当页面上的某个TextBox 设置了属性ReadOnly = "True" 或 Enabled = "False" 时,在客户端为其赋值后,在后台代码中却无法获 ...

  8. ASP.Net TextBox只读时不能通过后台赋值取值

    给页面的TextBox设置ReadOnly="True"时,在后台代码中不能赋值取值,下边几种方法可以避免: 1.不设置ReadOnly,设置onfocus=this.blur() ...

  9. C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度

    一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等 ...

随机推荐

  1. scala简单学习---1

    :paste //进入代码块模式 :quit //退出scala编程 安装方面: 版本:scala-2.12.4.msi 环境变量: %SCALA_HOME%\bin;%SCALA_HOME%\jre ...

  2. [CDH] Cloudera's Distribution including Apache Hadoop

    You may choose to install spark, yarn, hive, etc one by one. [Spark] 00 - Install Hadoop & Spark ...

  3. iscsi序列二、iscsi多路径配置方式

    一.ISCSI多路径应用 如果存储服务器到交换机只有一条线路的时候,那么一条线路出线故障,整个就没法使用了,所以多线路可以解决这个问题,避免单点故障 如上图,如果SAN服务器与客户端交换机只有一条线路 ...

  4. SVN错误信息汇总

    svn错误信息  # # Simplified Chinese translation for subversion package # This file is distributed under ...

  5. 使用throw和throws 引发异常

    1.throw 用在方法内抛出异常,通常可以自行使用try catch进行异常处理 如果不自行处理的话,需要在方法上使用throws抛出异常 public static void testAge(){ ...

  6. linux编译gpu_flow

    因为需要做双流,论文里面推荐到这个GPU版本的TVL1算法,于是开始编译. 一.下载源码 git clone https://github.com/feichtenhofer/gpu_flow.git ...

  7. 增强for循环的简单总结

    整体来说:增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方法.对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个. 详细来说:1,区 ...

  8. Ansible-galera

    在四台虚拟机上都安装好docker 一.控制节点 1. 域名解析 [root@d ansible]# vim /etc/hosts [root@d ansible]# scp /etc/hosts n ...

  9. .Netcore 2.0 Ocelot Api网关教程(1)- 入门

    Ocelot(Github)Ocelot官方文档(英文)本文不会介绍Api网关是什么以及Ocelot能干什么需要对Api网关及Ocelot有一定的理论了解 开始使用Ocelot搭建一个入门级Api网关 ...

  10. 鸟哥私房菜基础篇:例行性工作排程 (crontab)习题

    猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0430cron.php 1-今天假设我有一个命令程序,名称为: ping.sh 这个档名!我想要让系统每 ...