在 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 中的多值属性