multiple類型的select option在django后台如何取值


之前前端的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類型  可以獲取指定鍵的所有值   如果鍵不存在則返回空列表[]  可以設置默認值進行后續處理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM