如何在 Django 中访问单选按钮选择值



我正在尝试访问我的 django 视图中的单选按钮选定值,但它返回on而不是选定值。

模板表单

<form class="col-md-8 mx-auto" action="upload" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group" id="div_id_sample" >
<label for="id_sample" class="col-form-label  requiredField">Select File</label><br>
<div class="btn btn-primary">
<input type="file" name="sample" class="clearablefileinput" required id="id_sample" accept=".exe">
</div>
</div>
<div class="form-group">
<label for="radiogroup">Enforce Timeout</label><br>
<div class="btn-group" data-toggle="buttons" id="radiogroup">
<label class="btn btn-secondary">
<input type="radio" name="timeoptions" id="option60" autocomplete="off" value="60"> 60 seconds
</label>
<label class="btn btn-secondary">
<input type="radio" name="timeoptions" id="option120" autocomplete="off" value="120"> 120 seconds
</label>
<label class="btn btn-secondary active">
<input type="radio" name="timeoptions" id="option180" autocomplete="off" checked value="180"> 180 seconds
</label>
</div>
</div>
<div class="form-group">
<label for="radiogroup2">Select Machine:</label><br>
<div class="btn-group" data-toggle="buttons" id="radiogroup2">
<label class="btn btn-secondary">
<input type="radio" name="machineoptions" id="machine1" autocomplete="off" value="0"> Windows XP
</label>
<label class="btn btn-secondary active">
<input type="radio" name="machineoptions" id="machine2" autocomplete="off" value="1" checked> Windows 7
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

views.py在我的视图中,我使用的是ModelForm,但没有在我的HTML中使用,其背后的原因是我复制并粘贴了ModelForm生成的html代码。原因是因为我需要收集另外两个不在我的数据模型中的项目,以便为什么。


def upload(request):
if request.user.is_authenticated:
if request.method == 'POST':
file = request.FILES['sample']
form = SampleForm(request.POST, request.FILES)
if form.is_valid():
new_sample = form.save(commit=False)
new_sample.file_name = file.name
new_sample.user = request.user
print(request.POST)
TimeOut = request.POST.get('timeoptions')
machine = request.POST.get('machineoptions')
print(TimeOut)
print(machine)
form.save()
return redirect('reports')
else:
messages.info(request,'Invalid Form')
else:
form = SampleForm()
if request.method == 'GET':
return render(request, 'upload2.html', {'form': form})
else:
return redirect(reverse('login'))

打印输出

<QueryDict: {'csrfmiddlewaretoken': ['VvAqdOp8RrpKOgwxLD2dpGartPvUrTHTg9AUbqsX6vphxdojTJqn7tsvLCkneWOm'], 'timeoptions': ['on'], 'machineoptions': ['on']}>
on
on

我只是尝试访问选定的按钮值。

我想这主要是因为您将<input>标签包含在<label>标签中。此外,还必须为 for 属性for并将输入元素的id放在<label>标记中

尝试如下:

<label class="btn btn-secondary" for="option60">60 seconds</label>
<input type="radio" name="timeoptions" id="option60" autocomplete="off" value="60"> 

您可以对所有单选按钮执行此操作。然后在您的视图中,您可以使用TimeOut = request.POST.get('timeoptions')

最新更新