我试图显示用户从index.html 页面选择的doclistings.html 模板中的值。我似乎无法打印该值,也没有收到任何错误。我认为值(value)没有被存储。
这是带有我要存储的下拉值的索引页。
<div class="signup">
<div class="form-group">
<form action="/doclistings/" method="post">
<select class="form-control" id="select" name="spec">
<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>
</div>
我希望用户选择下拉值并点击提交。然后,用户应该被引导至文档列表页面,页面顶部打印有值。提交按钮确实会将其带到文档列表,但它不会打印该值。
这是我试图在其中显示值的 doclistings.html 模板
{{value}}
这是我的观点.py
def index(request):
d = getVariables(request,dictionary={'page_name': "Home"})
if request.method == "POST":
form = DropdownSelectionForm(request.POST)
if form.is_valid():
selection = form.cleaned_data[{{ form.value }}]
selection.save()
return HttpResponseRedirect('/doclistings', {{ form.value }})
else:
form = DropdownSelectionForm()
return render(request, 'meddy1/index.html', {'form': form})
@csrf_exempt
def doclistings(request):
d = getVariables(request)
doctors = Doctor.objects.all()
paginator = Paginator(doctors, 20) #Show 20 doctors per page
page = page = request.GET.get('page')
try:
doctors = paginator.page(page)
except PageNotAnInteger:
doctors = paginator.page(1)
except EmptyPage:
doctors = paginator.page(paginator.num_pages)
d['doctors'] = doctors
d['paginator'] = paginator
return render_to_response('meddy1/doclistings.html',d)
url.py
url(r'^doclistings/$', views.doclistings, name='doclistings'),
表单.py
class DropdownSelectionForm(forms.Form):
selection = forms.CharField()
最佳答案
你这里有很多问题。
最主要的是你没有包含 name
<select>
中的属性标记,因此您的浏览器根本不会发送数据,并且 request.POST
将是空的。
但是,您有一个表单,因此您应该首先使用它来显示数据 - 而不是在 HTML 中手动列出选择及其选项,您应该只执行 {{ form.value }}
.
但是,你又遇到了一个问题:你正在创建 form
View 中的变量,但您永远不会将该变量发送到模板上下文。您缺少 render
的第三个参数,这是模板变量的字典:
return render(request, 'meddy1/index.html', {'form': form})
您在 doclistings
中遇到同样的问题:你正在愉快地建立一本字典,d
,您想要在模板中使用的所有变量,但实际上从未将它们传递给该模板。同样,调用应该是:
return render(request, 'meddy1/doclistings.html', d)
关于python - Django 1.6 将下拉选择值传递给另一个模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24180061/