在 Django 视图中检索 Select2 多值以在后端使用

Posted

技术标签:

【中文标题】在 Django 视图中检索 Select2 多值以在后端使用【英文标题】:Retrieve Select2 multi values in Django Views to use in backend 【发布时间】:2021-05-18 14:32:42 【问题描述】:

我的 html 中有一个可用的 Select2 Multi Dropdown,但是如何将这些值带回 Django 以在后端使用?

例如在我的 html 中,我有:

<script>
    $(document).ready(function()
    
        $("#ddlselect").select2(
            placeholder:'Select from List',
            closeOnSelect:false
        );

    );
</script>

然后我用以下代码填充下拉列表:

        <select id="ddlselect" multiple="multiple" style="width: 250px;">
            % for item in mylist %
                <option>  item  </option>
            % endfor %
        </select>

这可行,我可以从下拉列表中进行选择。

我可以在 html 中使用以下内容检索值:

<script>
function myFunction() 
  alert("Selected value is: "+$("#ddlselect").select2("val"));

</script>

现在,如何将这些值带回我的 Django 视图?

我已经尝试了以下 -

class newoption(TemplateView):

   template_name = 'home/page.html'
   
   def get(self, request):

      return render(request, self.template_name, dict)

   def post(self, response):
        a = response.POST['ddlselect']

我在尝试返回 a 以在后端使用时遇到错误。如何从 select2MultiSelect 中检索选定的值?

【问题讨论】:

【参考方案1】:

你可以使用getlist()方法:

返回带有请求键的数据列表。返回一个空 如果键不存在,则列出,默认为无。保证 返回一个列表,除非提供的默认值不是一个列表。

self.request.POST.getlist('ddlselect')

类似这样的:

from django.http import HttpResponse

class NewOption(TemplateView):
    
    ...

    def post(self, request, *args, **kwargs):
        ddl = request.POST.getlist('ddlselect')
        ... Some code here ...
        return HttpResponse("Submitted!")

还将name 属性添加到您的 html 选择中:

<select name="ddlselect" id="ddlselect" multiple="multiple" style="width: 250px;">
...
</select>

【讨论】:

感谢您的回复。我在我的代码上返回一个空白列表。我还有什么需要补充/考虑的吗? 你是什么意思 - “我在我的代码上返回一个空白列表”? 变量 ddl 返回一个空白列表,而不是从多选中选择的值。 @MC2020,打印您的request.POST。你看到什么了吗? @MC2020,将name="ddlselect" 添加到您的选择中

以上是关于在 Django 视图中检索 Select2 多值以在后端使用的主要内容,如果未能解决你的问题,请参考以下文章

检索并分配 jcr:mixinTypes magnolia 中的多值属性

当搜索没有返回结果时,Select2 过滤器值消失

在Django视图函数中无法检索AJAX请求数据值。

无法在 aws amazon linux v2 内的 django 视图函数中检索或创建数据库对象

django-视图

如何检索存储在 select2 下拉列表中的数据?