我想获取用户选择的下拉字段的值,并在下一页上使用它来根据下拉选项过滤一些配置文件列表。
我在我的index.html页面中有这个,并希望用户在下拉列表中选择一个选项,然后点击提交并重定向到doclistings.html页面
<div class="form-group">
<form action="/doclistings/" method="post">
<select class="form-control" id="select">
<option><b>Choose a Speciality...</b></option>
<option value ="Dermatologist">Dermatologist</option>
<option value = "Dentist">Dentist</option>
<option value = "ENT">Ear, Nose and Throat (ENT)</option>
<option value = "Opthalmologist">Eye Doctor</option>
<option value = "Psychiatrist">Psychiatrist</option>
<option value = "Orthopedist">Orthopedist</option>
</select>
<span class="input-group-btn">
<button class="btn btn-primary" type="submit" name="submit" id="ss-submit">Find Doctors</button>
</span>
</div>
doclistings.html
{% for doc in doclist %}
{% if doc.specialization == } # value from the last page
<div class = "doctorrow">
<h2><a href="/docprofile/{{doc.id}}/">{{doc.name}}</a></h2>
<h3> {{doc.specialization}}</h3>
</div>
</div>
{% endfor %}
views.py
def index(request):
if request.method == "POST":
form = DropdownSelectionForm(request.POST)
if form.is_valid():
selection = form.cleaned_data['value']
return HttpResponseRedirect('/doclistings')
else:
form = DropdownSelectionForm()
return render(request, 'meddy1/index.html')
@csrf_exempt
def doclistings(request):
return render(request, 'meddy1/doclistings.html', {'doclist': Doctor.objects.all()})
forms.py
class DropdownSelectionForm(forms.Form):
selection = forms.CharField()
答案 0 :(得分:0)
尝试POST,然后使用request
中发布的值在下一个视图中呈现它。这是doc -
https://docs.djangoproject.com/en/1.6/topics/forms/#using-a-form-in-a-view
修改强> 您可以执行以下任一操作 -
将alldocs视图设置为表单中的form action
,并将form method
设置为GET
。因此,当发布表单时,您可以在alldocs视图的query string
中获取值。
使用索引视图并通过检查request.method检查是否执行了POST操作,然后从那里获取值并使用redirect
(来自django.shortcuts
)重定向到您需要的值作为参数的视图。
我在前面提到的文档中记录了检查POST或GET的方式。