之前前端的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. php缓存加速优化--Xcache

    1.安装软件:cd /usr/local/src/下载软件包wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache- 3.2.0.tar.b ...

  2. Ubuntu 安装 docker,并上传到dockerhub

    一.安装Docker apt-get -y install docker.io 链接: ln -sf /usr/bin/docker.io /usr/local/bin/docker 检查docker ...

  3. Swift的if let和guard let的使用 <一看就懂哟>

    // // ViewController.swift // 可选项的判断 // // Created by 思 彭 on 16/9/16. // Copyright © 2016年 思 彭. All ...

  4. java数据结构之WeakHashMap

    一.JAVA中的四种引用类型 1.强引用(StrongReference):强引用是最为普遍的一种引用,如果对象被强引用,那么垃圾回收器无论如何都不会回收它,当内存不足时会抛出OutOfMemoryE ...

  5. 二、windows下搭建vue开发环境+IIS部署

    有时我们的服务器并不一定是node,也许是IIS,这样我们就需要把工程构建出来,与IIS集成. 构建该项目的命令如下 cnpm run build 将dist文件夹拷贝出来,放到IIS的发布目录,在浏 ...

  6. linux中查找命令find、locate、whereis、which、type的区别

    find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/var/lib/locatedb)文件不同,find查找的是磁盘空间. locate locate命令其实 ...

  7. 《精通并发与Netty》学习笔记(02 - 服务端程序编写)

    上节我们介绍了开发netty项目所必需的开发环境及工具的使用,这节我们来写第一个netty项目 开发步骤 第一步:打开https://search.maven.org 找到netty依赖库 第二步:打 ...

  8. windows 3种方式运行exe文件

    1.双击文件运行 2.打开cmd,cd 到要运行的文件目录下,输入文件名或者文件名.exe 3.将文件目录配置到系统环境变量,按windws+R输入文件名或者文件名.exe

  9. 消息中间件RabbitMq的代码使用案例

    消费者: ---------------------- 构造初始化: public RabbitMqReceiver(String host, int port, String username, S ...

  10. Design Log Storage System

    You are given several logs that each log contains a unique id and timestamp. Timestamp is a string t ...